java - 删除ArrayList中间的元素后结果是什么?

标签 java arraylist

当我们从ArrayList中间删除一个元素时,结果是什么:将创建一个包含旧元素的新列表,或者后面的元素将在旧列表中向左移动?

最佳答案

当您从 ArrayList 中删除一个元素时,被删除元素后面的所有元素的索引都会减 1。

ArrayList 由数组支持。在删除的情况下,被删除元素后面的后备数组部分将被复制到从被删除元素索引开始的数组部分。这是通过 System.arraycopy 完成的:

public E remove(int index) {
    rangeCheck(index);
    modCount++;
    E oldValue = elementData(index);
    int numMoved = size - index - 1;
    if (numMoved > 0)
        // this is the part that moves the following elements
        System.arraycopy(elementData, index+1, elementData, index, numMoved);
    elementData[--size] = null;
    return oldValue;
}

关于java - 删除ArrayList中间的元素后结果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056466/

相关文章:

java - 如何修复java中的 'Could not convert socket to TLS'错误

java - 使用 Java 和 FOP 设置 PDF 标题

java - 使用 JAXB/JAX-RS 将 XML 元素包装在子元素中

java - 可以将常量值传递给函数参数吗?

java - 使用 Scanner 填充对象的 ArrayList

java - 如果 ArrayList 是实例变量,它是否会在 Java 中自动声明为静态?

java - 如何在 JComponent 上永久绘画

java - 将数组中的两个 double 相乘时收到 0.0

java - 在 Arraylist 中计算重复项和分组

java - ArrayList不存储值