ArrayList内部是由Object[]数组实现的,默认容量是10,当向ArrayList中添加元素时,如果新增元素会导致容量不足,就会触发扩容操作。 有四个步骤 1.计算新的容量,新容量默认是当前容量的1.5倍。 2.判断是否需要继续扩容,如果新容量仍然不足以容纳新增元素,则将新容量设置为当前元素数量加上新增元素数量。 3.检查是否超出最大容量,如果新容量超出了ArrayList的最 大容量限制,则将新容量设置为最大容量,因为这个最大容量是int的最大值,所以到不了这一步就发生outofmemory错误。 4.创建一个新的数组,调用Arrays.copyof()方法,将原数组中的元素复制到新数组中。
注意:本文归作者所有,未经作者允许,不得转载