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

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

几个重要的初始化参数

几个重要的方法

一个空的构造方法

添加元素的方法

确认内部的容量

计算容量

确认扩展容量

扩展容量的方法

从这个方法中可以看看到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 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值