jdk1.8之ArrayyList的源码分析以及扩容机制

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

几个重要的初始化参数

jdk1.8之ArrayyList的源码分析以及扩容机制_第1张图片

几个重要的方法

一个空的构造方法

添加元素的方法

jdk1.8之ArrayyList的源码分析以及扩容机制_第2张图片

确认内部的容量

计算容量

jdk1.8之ArrayyList的源码分析以及扩容机制_第3张图片

确认扩展容量

jdk1.8之ArrayyList的源码分析以及扩容机制_第4张图片

扩展容量的方法

jdk1.8之ArrayyList的源码分析以及扩容机制_第5张图片

从这个方法中可以看看到Arrays.copyof()方法,在集合的底层扩容的时候实现方式就是先把之前的数据复制过去然后再进行元素的添加,大家还可以点击进去看数组复制的实现方式

注释:①Java的ArrayList中,定义了一个数组elementData用来装载对象的,相关的内容推荐大家参考https://blog.csdn.net/zero__007/article/details/52166306 这个文章

②位运算 :>> 转二进制像右边移动 相当于 /2

<< 转二进制 向左边移动 相当于 *2

本文主要参考:

https://blog.csdn.net/yz972641975/article/details/78662617

https://blog.csdn.net/zero__007/article/details/52166306 

 

 

你可能感兴趣的:(java进阶)