今天在牛客上看到一篇讲的不错的arrayList的扩容机制,所以总结分享和记录一下,
集合框架collection和map中,collection有三个“儿子” :list,set和queue,
Arraylist构造器方法底层是通过创建一个object的空数组
在初始化Arraylist的时候可以看到是一个空数组,而在增加一个元素的时候才是初始化大小
这里就通过判断当前list是否是空的,然后对数组初始化大小
这里初始化大小为10
而对于扩容问题也存在在add方法中
这里可以看到主要的扩容方法在grow里面,
在grow方法里面可以发现扩容的长度是以前的1.5倍,然后通过最后一行 Arrays.copyof将数据copy到新的数组里面
当然,在remove方法里也是差不多的