ArrayList比较简单,主要是通过数组来实现的

需要注意的是其初始容量是10

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

需要注意增长方法grow()

/**
* Increases the capacity to ensure that it can hold at least the
* number of elements specified by the minimum capacity argument.
*
* @param minCapacity the desired minimum capacity
*/
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}

只要size > 数组的长度,就会触发grow,其中增长比例是原来的容量的一半

        int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);

然后把原来数组的内容拷贝到新的数组

========================================================================分割线========================================================

ArrayList和LinkedList的区别

ArrayList是通过数组来实现的,读取性能很高,随机访问时间复杂度为O(1),适用于读大于写的场景

LinkedList是是通过双向队列来实现的,更新效率更高,写只需要修改前后两个节点的相关引用,但是读取效率比较低,需要最多遍历一半长度的队列,适用与写大于读的场景

最新文章

  1. curl命令使用
  2. osg osgDB::Options noTexturesInIVEFile ForceReadingImage dds_flip
  3. 外键为&#39;,&#39;(逗号)拼接ID,连接查询外键表ID
  4. SPI数据传输(库函数方法)
  5. USACO section1.2 Transformation
  6. UVA 10325 The Lottery( 容斥原理)
  7. install kinect driver for ARM---38
  8. 引擎设计跟踪(九.14.2i) Android GLES 3.0 完善
  9. 重叠I/O之可等待的重叠I/O【系列一】
  10. CSS 链接
  11. App接口设计原则-b
  12. Activity---Fragment---listView的实现
  13. EXCEL数据导入数据库实例(NPOI)
  14. 大数据与 AI 生态中的开源技术总结
  15. linux gcc 静态 动态链接库
  16. netstat -na 查看有大量TIME_WAIT解决办法(修改内核参数)
  17. 洛谷P1092 虫食算(算竞进阶习题)
  18. Python日志模块logging&amp;JSON
  19. 从理论到实践 全面理解HTTP/2
  20. function类型(c++11)

热门文章

  1. Clairaut 定理 证明
  2. yum pip
  3. 调用其他VBA工程中的过程和函数以及API函数
  4. iOS性能检测工具instrunments简单介绍
  5. MySQL表与表的关系
  6. java实现线程交替打印1-52和A-Z
  7. [LC] 117. Populating Next Right Pointers in Each Node II
  8. 86)PHP,PDO常用函数
  9. java和javac命令
  10. spring顾问包装通知