指定位置添加元素:
public void add(int index, E element) {
rangeCheckForAdd(index); // 判断index是否有效
ensureCapacityInternal(size + 1); // 上面已经讲过原理。
System.arraycopy(elementData, index, elementData, index + 1,
size - index); // 从该位置复制一份后面的值,全部往后移。
elementData[index] = element; // 最后在当前位置修改元素值。
size++;
}
看看ArrayList 是如何删除的:.
public E remove(int index) {
rangeCheck(index); // 判断角标是否越界
modCount++; //操作计数器(用于迭代器迭代的时候如果这个list发送变化,能够及时感知到,提前报错,而不是获取错误数据)
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;
}

本文解析了ArrayList在Java中的add和remove方法实现细节,涉及元素插入、容量调整和数据移动。通过实例展示了如何在指定位置插入新元素,并移除指定索引处的旧元素,同时介绍了ArrayList维护数据结构变化的技巧。
https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.337.search-card.all.click&vd_source=3117718bf474f48fd81d26049c0c97ac
172万+

被折叠的 条评论
为什么被折叠?



