arrayList底层是使用数组编写的
平常我们使用arrayList使,可能会发现,其长度似乎定义的很长,不管往里面添加多少数据,它都可以容得下
1、其实在arrayList底层中数组最开始定义的长度只有10;关键在于其动态扩容的代码
2、它的底层扩容代码关键是 (size+size>>1), >>1是说明意思呢?>>1:说是说向右移一位
将size转化为二进制数,因为存储1字节由8个二进制组成,所以它的向右移一位二进制位,例如00000100,转化来是4,向右移动一位变成00000010,再次转化出现了2,所以
arrayList底层的数组大小是1.5倍式增加
3、我们向数组添加数据时,当数组达到10时,会进行判断,数组是否填满,如果填满
就新建一个数组,并且将其长度变为旧数组的1.5倍,之后再将存储再旧数组的数据
的地址赋值给新数组,这样就是扩容了
4、简单的扩容代码截图: