ArrayList源码分析
2020-05-12 15:24:12 0 举报
ArrayList源码分析
作者其他创作
大纲/内容
需要扩容grow(minCapacity)
分析第一次添加和临界点添加
添加元素boolean add(E e)
遍历数组判断传入的对象是否为null
获取数组中index位置的元素E elementData(int index)
//这里看到ArrayList添加元素的实质就相当于为数组赋值 elementData[size++] = e;
添加一个Collectionboolean addAll(Collection<? extends E> c)
按索引删除元素E remove(int index)
检查是否扩容Object[] a = c.toArray();int numNew = a.length;ensureCapacityInternal(size + numNew)
对index进行界限检查rangeCheckForAdd(index)
o.equals(elementData[index])
fastRemove(int index)
按索引删除元素boolean remove(Object o)
检查是否扩容ensureCapacityInternal(size + 1)
注意:这个是插入元素到指定位置的方法
不是第一次添加返回最小容量值,也就是当前数组的大小+1minCapacity
对index进行界限检查rangeCheck(index)
扩容的判断条件if (minCapacity - elementData.length > 0)
是否第一添加元素elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
elementData[index] == null
收藏
0 条评论
下一页