我正在编写自己的数组列表。这是相同的删除方法,
public E remove(int index){
E value =(E) elementData[index];
for(int i=index;i<size-1;i++){
elementData[i]=elementData[i+1];
}
elementData[size-1]=null;
return value;
}
现在我将执行一些删除操作
Box<Integer> list = new Box<>();
for(int i=1;i<5;i++){
list.add(i);
}
print(list);
list.remove(1);
print(list);
现在这将导致以下输出,
1 2 3 4
1 3 4 null
但是当我使用API中的ArrayList时,我将获得以下输出:
1234
134
我想念什么吗?有人可以向我解释我哪里出错了。
最佳答案
我想您需要在size
操作之后更新remove()
:
public E remove(int index){
E value =(E) elementData[index];
for(int i=index;i<size-1;i++){
elementData[i]=elementData[i+1];
}
elementData[size-1]=null;
--size; // Decrement size
return value;
}
您还需要确保
index
在elementData
数组的范围内。