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数组

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

    

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;
}
}

猜你喜欢

转载自www.cnblogs.com/superxuezhazha/p/12316802.html
今日推荐