ArrayList之add(1.7和1.8)源码流程图
2018-05-18 08:51:28 1 举报
ArrayList之add元素(1.7和1.8代码一致)源码解析------觉得还可以就请帮忙点赞,这样会给我增加可使用文件的数量,进而继续分享
作者其他创作
大纲/内容
后续逻辑与add(E element)一致,就不再次详细描述
调用 ensureExplicitCapacity(int minCapacity)
返回copy的数组
private void ensureExplicitCapacity(int minCapacity) { modCount++;//修改标识modCount加1 // overflow-conscious code if (minCapacity - elementData.length 0) grow(minCapacity);//入参容量大于原数组容量则扩容(grow(minCapacity)) }
调用 grow(int minCapacity)
Math
调用void rangeCheckForAdd(int index)检查index是否越界
Array
public boolean add(E e) { ensureCapacityInternal(size + 1); //确保容量足够容纳新增加数据 // Increments modCount!! elementData[size++] = e; return true; }
System
public boolean add(E e)
ArrayList
返回新数组
调用ensureCapacityInternal(int minCapacity)
返回
}
Arrays
private static int hugeCapacity(int minCapacity) { if (minCapacity MAX_ARRAY_SIZE) ? Integer.MAX_VALUE :@2 MAX_ARRAY_SIZE; }@1 if (minCapacity 0) //入参容量小于0 overflow throw new OutOfMemoryError();@2若入参大于Integer.MAX_VALUE - 8则使用Integer.MAX_VALUE,小于Integer.MAX_VALUE - 8则使用Integer.MAX_VALUE - 8为最终容量.
调用 hugeCapacity(int minCapacity)
0 条评论
下一页