码迷,mamicode.com
首页 > 其他好文 > 详细

List体系

时间:2019-11-24 17:54:47      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:容量   源码   final   obj   int   city   object   ini   数据   

1. 常见实现类

ArrayList
LinkedList
Vector

2. ArrayList和Vector

  1. 数据结构和用法相同
  2. ArrayList是非线程同步(安全)的,适合单线程使用
  3. Vector是线程同步的,适合多线程使用
  4. 线程同步会降低程序性能,ArrayList性能高于Vector

3. ArrayList的源码

3.1 数据结构是什么

transient Object[] elementData;

3.2 默认容量是多少

    /**
     * Default initial capacity.
     */
    private static final int DEFAULT_CAPACITY = 10;

3.3 如何扩容的

    private void grow(int minCapacity) {
        // 获得原来数组的长度
        int oldCapacity = elementData.length;
        // oldCapacity >> 1 相当于除以2,新容量是原来容量的1.5倍
        int newCapacity = oldCapacity + (oldCapacity >> 1);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0)
            newCapacity = hugeCapacity(minCapacity);
        // 把旧数据数据复制到新数组中,替换原来数组
        elementData = Arrays.copyOf(elementData, newCapacity);
    }

List体系

标签:容量   源码   final   obj   int   city   object   ini   数据   

原文地址:https://www.cnblogs.com/macht/p/11923121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!