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

时间:2015-10-10 16:50:34

标签: java arraylist

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

6 个答案:

答案 0 :(得分:2)

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;
}

答案 1 :(得分:1)

来自here

  

calc_loop() -> receive {add, P, A, B} -> P ! {add_reply, A + B}, calc_loop(); {mul, P, A, B} -> {_, _, N} = now(), case (N rem 5) of 0 -> P ! {mul_reply, A * B}, calc_loop(); _ -> ok end end. :   删除此列表中指定位置的元素。转移任何   左边的后续元素(从索引中减去一个)。

答案 2 :(得分:1)

当您尝试从arrayList方法中删除元素时,剩余的条目将向后移动,因此没有间隙。

删除此列表中指定位置的元素(可选操作)。将任何后续元素向左移位(从索引中减去一个)。返回从列表中删除的元素。

谢谢

答案 3 :(得分:0)

  

将创建一个包含旧元素的新列表,或者后面的元素将在旧列表中向左移动

不,因为ArrayList是可变的。删除元素时,这会影响当前ArrayList对象引用,该引用将减少一个元素。 之后被移除的元素将被移动到左侧。

答案 4 :(得分:0)

加。到Javadoc,它将元素向左移动。看看

答案 5 :(得分:0)

  

您要删除的元素之后的元素将转移到   左边。数组列表元素将重新排列。