欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java需要关注的知识点---ArrayList

程序员文章站 2022-03-23 14:55:21
...
1.ArrayList 容器初始大小为10,使用object数组实现。
2.ArrayList 在扩容、增加元素和删除元素的时候,使用的是数组的深克隆。
3.ArrayList 的add()方法:

public boolean add(E e) {
ensureCapacity(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}

ArrayList的ensureCapacity方法:

public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}

ArrayList进行扩容的时候并不是2倍的扩容,而是使用(Oldsize* 3)/2 + 1的方式。
插入数组的时候,再已有值的最后插入。
ArrayList的remove方法:

public E remove(int index) {
RangeCheck(index);

modCount++;
E oldValue = (E) elementData[index];

int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work

return oldValue;
}

ArrayList在删除元素的时候,会把需要删除元素后面的所有元素都往前移动一位,然后设置list最后一个元素为空,让虚拟机回收该块内存。
相关标签: ArrayList