当我们从ArrayList
中间删除一个元素结果:将创建一个包含旧元素的新列表,或者后面的元素将在旧列表中向左移动?
答案 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)
您要删除的元素之后的元素将转移到 左边。数组列表元素将重新排列。