ArrayList 源码总结

作者: 阿琦 | 2021-03-24 | 阅读

   

ArrayList

与它类似的是LinkedList,和LinkedList相比,它的查找和访问元素的速度较快,但新增,删除的速度较慢。

小结:ArrayList底层是用数组Object[] elementData实现的存储。

特点:查询效率高,增删效率低,线程不安全。使用频率很高。

ArrayList 底层数组大小

无参构造函数

源码注释:Constructs an empty list with an initial capacity of ten. 构造一个初始容量为10的空列表。

有参构造函数

初始化的时候指定底层数组的大小

ArrayList 新增

add(E e) 新增会扩容

add(int index, E element) 在指定位置插入指定元素

拷贝数组: 它是复制了一个数组,从index(传进来的,如果是 6,那么就是 index 6) 的位置开始的,然后把它放在了index(传进来的, 如果是 6,那么就是 6+1 ) +1的位置。腾出来的位置给新增的元素。

ArrayList 删除

remove(int index); 和新增一样也是拷贝数组,删除的位置被覆盖了。

为什么ArrayList要比LinkedList快得多

论遍历ArrayList要比LinkedList快得多,ArrayList遍历最大的优势在于内存的连续性,CPU的内部缓存结构会缓存连续的内存片段,可以大幅降低读取内存的性能开销。

初始化数组大小

ArrayList(int initialCapacity) ;

不会初始化数组大小。

初始化后 size 还是 0.


版权声明:本文由 阿琦 在 2021年03月24日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《ArrayList 源码总结》




  相关文章:


留言区:

TOP