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