ArrayList中add和remove方法具有什么功能呢?
下文笔者讲述Arraylist类中add和remove方法的功能简介说明,如下所示
public boolean remove(Object o)
add: 添加元素 remove: 移除元素
add源码
public boolean add(E e) {
ensureCapacityInternal(size + 1); //检查数组的容量+1是否满足需求
elementData[size++] = e; //数值放到元素上
return true; //返回新增成功状态
}
public void add(int index, E element) {
rangeCheckForAdd(index);
ensureCapacityInternal(size + 1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
remove方法的功能
//删除数组中的index位置的对象 public E remove(int index)
remove源码
public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // clear to let GC do its work
return oldValue;
}
监测移除的位置在数组元素长度之内
修改次数+1
将需要删除的元素赋给oldValue,并返回旧元素
numMoved计算出的是删除元素后需要移动的元素数
当numMoved>0说明删除元素后需要把后面的元素往前移动
当numMoved<0时,说明删除的元素为最后一个元素
直接把最后一个位置置空。
返回被删值
public boolean remove(Object o)
//删除数组中的o对象
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])) {
fastRemove(index);
return true;
}
}
return false;
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


