JAVA Collection 子接口之List

 

摘自 b站尚硅谷JAVA视频教程

/----List: 存储有序的 可重复的数据

  /----ArrayList : 始于JDK1.2,线程不安全的,效率高.底层使用 objec[]存储

    JDK 7:

      ArrayList lsit = new ArrayList(); // 创建一个长度为10 的 object数组 elementDate;

      当 list.add添加超过数组长度的时候,扩容为原来长度的1.5倍,将原有数据复制到新数组中.

      所以:建议使用带参数的构造器,声明其长度,避免扩容操作,提高效率.

    JDK 8 :

      声明变量的时候,不实例化.add操作的时候,才创建长度为10的object数组.

      其他操作与JDK 7 一致.

    小结:

      JDK 7 中对象数组的创建,类似于单例模式下的饿汉式,JDK 8 类似于懒汉式.延迟了数组的创建,节省了内存.

  /----LinkedList: 适用于频繁的删除/插入操作;底层使用双向链表存储.

    

    private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;

        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    }

 

  /----Vector: 始于JDK1.2,线程安全的,效率底;底层使用 object [] 存储.

    JDK 7 8 都是直接创建长度为10的object数组

    扩容的时候,直接扩大两倍.

 

 

 

    

 

 

 

 

 

 输出结果:[1,2],要删除 2这个数字,需要装箱.

posted @ 2020-02-16 14:44  超级学渣渣  阅读(156)  评论(0编辑  收藏  举报