ArrayList的扩容机制

默认初始容量10

 

1.add方法

第一步调用ensureCapacityInternal方法,第二步赋值

 

2.ensureCapacityInternal方法

第一步如果原数组为空那么长度为10,要不然就加一  第二步调用ensureExplicitCapacity

 

3.ensureExplicitCapacity方法

在此判断是否需要扩容,grow为扩容核心方法

 

4.grow方法

第一步定义旧的数组长度,第二步新的数组长度为原来的1.5倍,

第三步用旧的长度与原数组长度的1.5倍进行比较,如果小于0则重新赋值  第四步调用hugeCapacity方法

 

5.hugeCapacity方法

 

 

如果minCapacity大于最大容量,则新容量则为Integer.MAX_VALUE,否则,新容量大小则为 MAX_ARRAY_SIZE 即为 Integer.MAX_VALUE - 8

posted @ 2019-12-16 17:24  不想写BUG  阅读(640)  评论(0编辑  收藏  举报