javaalreadyJava之家

ArrayList底层数据结构介绍

2022-05-22  本文已影响0人  小小土豆dev

ArrayList

ArrayList底层是采用数组来进行数据的存储。


ArrayList源码

初始化大小

1、ArrayList通过无惨构造函数初始化的容量是0。


2、通过有参构造函数初始化的容量是参数的容量大小


ArrayList扩容机制

一:add操作扩容规则

1、空集合第一次add操作会触发首次扩容,扩容大小是10。
2、如果新add的元素超过ArrayList的容量,比如,添加第11个元素,扩容1.5倍(后面每次扩容是上次容量的1.5倍,如果1.5倍存在小数问题怎么解决,实际底层是通过右移一位来实现扩容1.5倍)
扩容是用新数组代替旧数组,指针指向新的数组的地址,旧的数组下次垃圾回收会进行回收。(创建一个新的数组,然后将旧数据copy过来,然后再追加新的元素)

grow是扩容方法


orivate stotic Final Int MAX ARRAY SIZE w Integer. RAX VALUE•.png

二:addAll操作扩容规则

1、一个空的集合第一次添加一个新的集合

2、非空集合添加元素

上一篇 下一篇

猜你喜欢

热点阅读