在Java中删除ArrayList的最后一个对象

时间:2013-06-07 15:27:24

标签: java data-structures arraylist

我想快速删除ArrayList中的最后一个对象。

我知道remove(Object O)O(n)中占用ArrayList,但我想知道是否可以在固定时间内执行此操作,因为我只想删除 last < / strong>对象?

2 个答案:

答案 0 :(得分:63)

请参阅the documentation for ArrayList#remove(int),如以下语法:

list.remove(list.size() - 1)

以下是它的实施方式。 elementData对后备数组进行查找(因此可以将其从数组中删除),这应该是常量时间(因为JVM知道对象引用的大小以及它可以计算偏移量的条目数) ),numMoved对于这种情况是0

public E remove(int index) {
    rangeCheck(index); // throws an exception if out of bounds

    modCount++;        // each time a structural change happens
                       // used for ConcurrentModificationExceptions

    E oldValue = elementData(index);

    int numMoved = size - index - 1;
    if (numMoved > 0)
        System.arraycopy(elementData, index+1, elementData, index,
                         numMoved);
    elementData[--size] = null; // Let gc do its work

    return oldValue;
}

答案 1 :(得分:-1)

只需使用。

arraylist.remove(arraylist.size() - 1)