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; }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。