zoukankan      html  css  js  c++  java
  • 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这个数字,需要装箱.

  • 相关阅读:
    逻辑回归
    异常
    内部类
    接口
    多态
    final关键字(最终的)
    不能被继承的父类成员
    对象初始化的过程
    方法重写
    abstract关键字
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/12316802.html
Copyright © 2011-2022 走看看