0
点赞
收藏
分享

微信扫一扫

【集合063】arraylist的扩容原理?

大雁f 2022-03-13 阅读 72
arraylist的扩容原理?
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE – 8 = 2^31-1-8 ; 
Integer.MAX_VALUE = 0x7fffffff = 2^31-1;

image-20220311192412115

  1. 老的长度等于当前elementData的长度。
  2. 新数组的长度=原数组的长度+原数组长度>>1,右移1是除以2.
  3. 若扩容1.5倍后仍不够用,则newCapacity=minCapacity
  4. 如果newCapacity比MAX_ARRAY_SIZE还大,则调用hugeCapacity方法。
  5. 老数据拷贝到新数组中。

image-20220311192836509

如果MAX_ARRAY_SIZE达不到要求,则赋值Integer.MAX_VALUE,理论上arraylist的最大容量为Integer.MAX_VALUE

举报

相关推荐

0 条评论