ArrayList 源码阅读
ArrayList 是最常用的 Java 集合了,我们都知道它的一些特性:有序,元素可重复,支持随机访问,但是插入和删除元素的效率不如 LinkedList,它的底层是实现原理是什么样的呢?从源码来学习一下吧!
成员变量
1 | /** |
构造方法
1 | /** |
扩容
ArrayList 的扩容比较简单
1 | private void grow(int minCapacity) { |
添加元素 Add
构造函数只是创建了一个空的数组,在加入第一个元素的时候,才会对数组进行初始化。
当加入第一个元素的时候,size 是等于默认值 0 的,然后 add 内部调用了 ensureCapacityInternal
方法,参数为 1,该方法内部调用 ensureExplicitCapacity
方法,另外 calculateCapacity
方法将计算出数组的最小容量为 10,所以在 ensureExplicitCapacity
方法内部会调用扩容方法,创建初始化的数组。
1 | public boolean add(E e) { |
获取元素 Get
1 | public E get(int index) { |
替换元素 Set
1 | public E set(int index, E element) { |
删除元素 Remove
1 | public E remove(int index) { |
- 本文作者: Kelly Liu
- 本文链接: http://tiantianliu2018.github.io/2020/03/28/Java-ArrayList-源码阅读笔记/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!