在ArrayList中删除()

Raj*_*ala 5 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;
    }
Run Code Online (Sandbox Code Playgroud)

现在我将执行一些删除操作

        Box<Integer> list = new Box<>();
        for(int i=1;i<5;i++){
            list.add(i);
        }
        print(list);
        list.remove(1);
        print(list);
Run Code Online (Sandbox Code Playgroud)

现在这将导致以下输出,

1 2 3 4

1 3 4 null
Run Code Online (Sandbox Code Playgroud)

但是当我使用API​​中的ArrayList时,我会得到输出为

1234

134
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?有人可以解释我哪里出错了.

Roh*_*ain 5

我想你需要更新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;
}
Run Code Online (Sandbox Code Playgroud)

您还需要确保它indexelementData数组的边界内.