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
         */// :~
  • 相关阅读:
    Layui里的倒计时的使用
    idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
    软件生存周期及其模型是什么?
    试述软件的概念和特点?软件复用的含义?构件包括哪些?
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试。
    给你一个网站,你如何测试?
    使用SpringBoot Actuator 监控应用
    使用SpringBoot 集成 FastDFS
    使用SpringBoot 上传文件
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10252807.html
Copyright © 2011-2022 走看看