remove() 方法用于删除集合中的元素。本篇解析ArrayList的remove(),removeAll(),以及JDK1.8中新增的removeIf()方法。
一、remove()
remove()方法有两个:
1、删除集合中指定位置元素的 remove(int index) 方法。
2、删除指定的、在集合正序遍历中第一次出现元素的 remove(Object o) 方法。
// 根据下标删除元素
public E remove(int index) {
// 检查下标是否越界
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
// 需要移动元素的个数
int numMoved = size - index - 1;
if (numMoved > 0)
// 将elementData数组index+1位置(包含index+1)以后numMoved个元素向前移动一位
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // clear to let GC do its work
return oldValue;
}
// 删除指定的、在正序遍历中第一次出现的元素
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
// 删除数据方法
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) {