在ArrayList中删除()

时间:2013-12-31 12:30:13

标签: 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;
    }

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

        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

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

1 个答案:

答案 0 :(得分: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;
}

您还需要确保index位于elementData数组的范围内。