本文主要是从JDK1.8的源码加以分析,ArrayList实现过程,以及扩容机制。List的底层实现主要是数据,很多的操作都是从数组演变而来。list每次在调用add()方法添加元素时,arraylist都需要对这个list的容量进行一个判断。如果容量够,直接添加,否则需要进行扩容。在1.8 arraylist这个类中,扩容调用的是grow()方法,通过grow()方法中调用的Arrays.copyof()方法进行对原数组的复制,在通过调用System.arraycopy()方法进行复制,达到扩容的目的
几个重要的初始化参数

几个重要的方法
一个空的构造方法

添加元素的方法

确认内部的容量

计算容量

确认扩展容量

扩展容量的方法

从这个方法中可以看看到Arrays.copyof()方法,在集合的底层扩容的时候实现方式就是先把之前的数据复制过去然后再进行元素的添加,大家还可以点击进去看数组复制的实现方式
注释:①Java的ArrayList中,定义了一个数组elementData用来装载对象的,相关的内容推荐大家参考https://blog.youkuaiyun.com/zero__007/article/details/52166306 这个文章
②位运算 :>> 转二进制像右边移动 相当于 /2
<< 转二进制 向左边移动 相当于 *2
本文主要参考:
https://blog.youkuaiyun.com/yz972641975/article/details/78662617
https://blog.youkuaiyun.com/zero__007/article/details/52166306
本文深入分析了JDK1.8中ArrayList的实现原理,特别是其扩容机制。通过源码解析,详细介绍了list在调用add()方法时如何判断容量并进行扩容,包括grow()方法的调用流程,以及Arrays.copyOf()和System.arraycopy()在扩容中的应用。

被折叠的 条评论
为什么被折叠?



