Java 在ArrayList中删除()
我正在写我自己的数组列表。下面是相同的删除方法Java 在ArrayList中删除(),java,collections,garbage-collection,Java,Collections,Garbage Collection,我正在写我自己的数组列表。下面是相同的删除方法 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;
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;
}
但是当我使用API中的ArrayList时,我将得到如下输出
1234
134
我错过什么了吗?有人能告诉我哪里出了问题。我想您需要在
删除()操作后更新大小
:
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;
}
public E-remove(int-index){
E值=(E)元素数据[索引];
for(int i=index;i认为您也必须更改大小。您也可以使用System.arraycopy
而不是for循环。System.arraycopy(elementData,index+1,elementData,index,size-index-1);elementData[--size]=null;
@ZouZou我在API中看到了这一点。我不知道如何查看本机代码。请告诉我如何查看本机代码。我在linux机器上使用Openjdk。最快的方法是直接签入。或者,如果您没有internet连接,所有源代码都位于JDK安装文件夹顶部的src.zip
文件中.Thanq Rohit。我错过了。非常感谢您的快速回复。@Rajundala如果对您有帮助,请不要忘记接受答案。@Zouzu我是stackoverflow的新手。谢谢。
1234
134
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;
}