- 根据源码
- 注意:
使用ensureCapacity(int minCapacity)指定的容量值,小于被指定前的容量1.5倍,将进行1.5扩容,大于1.5,将进行指定容量扩容
例如在未指定初始化容量的ArrayList,最少要指定15以上使用ensureCapacity(int minCapacity)才有效
在使用ArrayList(int initalCapcity)方法直接指定的是初始化的数组,即将 new Object[initialCapacity] 赋值给数组
指定为0时为空的数组,即将{}赋给数组
指定小于默认容量即10,不受默认容量影响
防止多想
除ArrayList(int initalCapcity)外,调用了都使用了Arrays.copyOf(T[] original, int newLength)对数组进行复制并指定容量,进行扩容
扩容时都是根据之前容量来计算扩容的,即之前容量的1.5倍.例如在之前容量为8,扩容后为12
copyOf(U[ ] original, int newLength,Class<? extends T[]> newType); newType - 要返回的副本的类(由于ArrayList中存在调用该方法标记一下,如toArray(T [ ] a) 方法)
ArrayList扩容机制,一图即可
最新推荐文章于 2024-08-22 16:13:15 发布