zoukankan      html  css  js  c++  java
  • java list

    list承诺可以将元素维护在特定的序列中,List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移动元素

    有两种List

    基本的ArrayList,它长于随机访问元素,但时在List的中间插入和移除元素较慢

    LinkedList,它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问.LinkedList在随机访问方面相对较慢,但它的特性较ArrayList更大

    package java.util;
    
    import java.util.function.UnaryOperator;
    public interface List<E> extends Collection<E> {  
        int size();
        boolean isEmpty();//判断List是否为空
        boolean contains(Object o);  //确定某个对象是否在列表中
            //对于基本数据类型和 String类型 如果字面值一样将返回true
    //对于对象和包装类如果是新new 的一个对象,即使字面值一样也返回false
     Iterator<E> iterator(); //迭代器
    Object[] toArray();
    //创建一个合适的数组
    <T> T[] toArray(T[] a);//将 a转化为一个数组
    boolean add(E e); //
    boolean remove(Object o);//将对象引用传递给remove()方法移除一个对象
    boolean containsAll(Collection<?> c); //判断一个List列表是否被包含在里面
    boolean addAll(Collection<? extends E> c);//插入一个List列表 boolean addAll(int index, Collection<? extends E> c);//插入一个对象 boolean removeAll(Collection<?> c); //基于equals(),移除List中的所有c中所包含的元素 boolean retainAll(Collection<?> c); //retainAll()方法是一种"交集"操作,retainAll()行为依赖于equals() default void replaceAll(UnaryOperator<E> operator) { Objects.requireNonNull(operator); final ListIterator<E> li = this.listIterator(); while (li.hasNext()) { li.set(operator.apply(li.next())); } } @SuppressWarnings({"unchecked", "rawtypes"}) default void sort(Comparator<? super E> c) { //排序List //Collection类中shuffle()方法为随机打乱 Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator<E> i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e); } } void clear(); //清空List boolean equals(Object o); //contains(),removeAll()和indexOf都会调用equals(),equals()属于Object的一部分 //List的行为会根据equals()的行为有所变化 int hashCode(); E get(int index); //返回Index所在的element E set(int index, E element);//和Set存在潜在冲突,该方法将index号元素修改为element void add(int index, E element);//添加element到index位置 E remove(int index); //移除Index所在的element int indexOf(Object o); //查找对象在List中所处的位置的索引编号(查找的是引用) //即使两个对象看起来一样也不相等,但是如果是基本数据类型则会相等 int lastIndexOf(Object o); ListIterator<E> listIterator(); ListIterator<E> listIterator(int index); List<E> subList(int fromIndex, int toIndex);//从一个大的List中创建一个片段(引用),不包括toIndex的值 //修改片段将大导致的List列表被修改 @Override default Spliterator<E> spliterator() { return Spliterators.spliterator(this, Spliterator.ORDERED); } }

    下面是一个Integer应用实例

    package object;
    
    //: holding/E05_IntegerListFeatures.java /****************** Exercise 5 ******************  * Use Integers instead of Pets to modify   * ListFeatures.java  (remember autoboxing).  * Explain any difference in results.  ***********************************************/  package holding; import java.util.*; import static net.mindview.util.Print.*; 
    import java.util.*;
    import static net.util.Print.*;
    
    public class E05_IntegerListFeatures {
        static Random rand = new Random(47);
    
        public static void main(String[] args) {
            List<Integer> ints = new ArrayList<Integer>(
                    Arrays.asList(1, 2, 3, 4, 5, 6, 7));
            print("1: " + ints);
            ints.add(8);
            print("2: " + ints);
            print("3: " + ints.contains(8));
            ints.remove(Integer.valueOf(8));
            Integer i = ints.get(2);
            print("4: " + i + " " + ints.indexOf(i));
            Integer j = Integer.valueOf(1);
            print("5: " + ints.indexOf(j));
            print("6: " + ints.remove(j));
            print("7: " + ints.remove(i));
            print("8: " + ints);
            ints.add(3, 0);
            print("9: " + ints);
            List<Integer> sub = ints.subList(1, 4);
            print("subList: " + sub);
            print("10: " + ints.containsAll(sub));
            Collections.sort(sub);
            print("sorted subList: " + sub);
            print("11: " + ints.containsAll(sub));
            Collections.shuffle(sub, rand);
            print("shuffled subList: " + sub);
            print("12: " + ints.containsAll(sub));
            List<Integer> copy = new ArrayList<Integer>(ints);
            sub = Arrays.asList(ints.get(1), ints.get(4));
            print("sub: " + sub);
            copy.retainAll(sub);
            print("13: " + copy);
            copy = new ArrayList<Integer>(ints);
            // Thinking in Java, 4th Edition Annotated Solution Guide 184
            copy.remove(2);
            print("14: " + copy);
            copy.removeAll(sub);
            print("15: " + copy);
            copy.set(1, 9);
            print("16: " + copy);
            copy.addAll(2, sub);
            print("17: " + copy);
            print("18: " + ints.isEmpty());
            ints.clear();
            print("19: " + ints);
            print("20: " + ints.isEmpty());
            ints.addAll(Arrays.asList(1, 2, 3, 4));
            print("21: " + ints);
            Object[] o = ints.toArray();
            print("22: " + o[3]);
            Integer[] ia = ints.toArray(new Integer[0]);
            print("22: " + ia[3]);
        }
    } /*
         * Output: 1: [1, 2, 3, 4, 5, 6, 7] 2: [1, 2, 3, 4, 5, 6, 7, 8] 3: true 4: 3
         * 2 5: 0 6: true 7: true 8: [2, 4, 5, 6, 7] 9: [2, 4, 5, 0, 6, 7] subList:
         * [4, 5, 0] 10: true sorted subList: [0, 4, 5] 11: true shuffled subList:
         * [4, 0, 5] 12: true sub: [4, 6] 13: [4, 6] 14: [2, 4, 5, 6, 7] 15: [2, 5,
         * 7] 16: [2, 9, 7] 17: [2, 9, 4, 6, 7] 18: false 19: [] 20: true 21: [1, 2,
         * 3, 4] 22: 4 22: 4 Holding Your Objects 185
         */// :~

     String

    package ch06;
    
    //: holding/E05_StringListFeatures.java /****************** Exercise 5 ******************  * Use Strings instead of Pets to modify   * ListFeatures.java  (remember autoboxing).  * Explain any difference in results.  ***********************************************/  package holding; import java.util.*; import static net.mindview.util.Print.*; 
    import java.util.*;
    import static net.util.Print.*;
    
    public class E05_StringListFeatures {
        static Random rand = new Random(47);
    
        public static void main(String[] args) {
            List<String> ints = new ArrayList<String>(
                    Arrays.asList("dog", "pig", "duck", "fly", "event", "boast", "convince"));
            print("1: " + ints);
            ints.add("yes");
            print("2: " + ints);
            print("3: " + ints.contains("pig"));
            ints.remove(String.valueOf("pig"));
            String i = ints.get(2);
            print("4: " + i + " " + ints.indexOf(i));
            String j = String.valueOf("event");
            print("5: " + ints.indexOf(j));
             print("6: " + ints.remove(j));
            print("7: " + ints.remove(i));
            print("8: " + ints);
            ints.add(3, "no");
            print("9: " + ints);
            List<String> sub = ints.subList(1, 4);
            print("subList: " + sub);
            print("10: " + ints.containsAll(sub));
            Collections.sort(sub);
            print("sorted subList: " + sub);
            print("11: " + ints.containsAll(sub));
            Collections.shuffle(sub, rand);
            print("shuffled subList: " + sub);
            print("12: " + ints.containsAll(sub));
            List<String> copy = new ArrayList<String>(ints);
            sub = Arrays.asList(ints.get(1), ints.get(4));
            print("sub: " + sub);
            copy.retainAll(sub);
            print("13: " + copy);
            copy = new ArrayList<String>(ints);
            // Thinking in Java, 4th Edition Annotated Solution Guide 184
            copy.remove(2);
            print("14: " + copy);
            copy.removeAll(sub);
            print("15: " + copy);
            copy.set(1, "connect");
            print("16: " + copy);
            copy.addAll(2, sub);
            print("17: " + copy);
            print("18: " + ints.isEmpty());
            ints.clear();
            print("19: " + ints);
            print("20: " + ints.isEmpty());
            ints.addAll(Arrays.asList("register", "vistor", "fork", "danger"));
            print("21: " + ints);
            Object[] o = ints.toArray();
            print("22: " + o[3]);
            String[] ia = ints.toArray(new String[0]);
            print("22: " + ia[3]);
        }
    } /*
         * Output: 1: [1, 2, 3, 4, 5, 6, 7] 2: [1, 2, 3, 4, 5, 6, 7, 8] 3: true 4: 3
         * 2 5: 0 6: true 7: true 8: [2, 4, 5, 6, 7] 9: [2, 4, 5, 0, 6, 7] subList:
         * [4, 5, 0] 10: true sorted subList: [0, 4, 5] 11: true shuffled subList:
         * [4, 0, 5] 12: true sub: [4, 6] 13: [4, 6] 14: [2, 4, 5, 6, 7] 15: [2, 5,
         * 7] 16: [2, 9, 7] 17: [2, 9, 4, 6, 7] 18: false 19: [] 20: true 21: [1, 2,
         * 3, 4] 22: 4 22: 4 Holding Your Objects 185
         */// :~
  • 相关阅读:
    狼羊过河问题
    java实现透明窗体
    商人胡萝卜问题
    NXP迅为IMX8开发板Andaoid编译环境搭建
    迅为龙芯2K1000开发板Linux下gcc编译
    迅为恩智浦i.MX8MM开发平台虚拟机安装Ubuntu16.04系统
    恩智浦NXP迅为i.MX6Q开发板资料提升了
    迅为龙芯2K1000开发板Linux工具之make工具和Makefile文件
    迅为瑞芯微3399开发板minimalYocto文件系统的构建
    迅为恩智浦IMX6Q开发板Buildroot 文件系统 alsa 声卡工具测试
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10252807.html
Copyright © 2011-2022 走看看