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

2022-09-01 00:27:29

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

我知道这需要一个,但我想知道是否有可能在恒定时间内执行此操作,因为我只想删除最后一个对象?remove(Object O)O(n)ArrayList


答案 1

请参阅 ArrayList#remove(int) 的文档,如以下语法所示:

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

以下是它的实现方式。 对支持数组进行查找(因此它可以将其从数组中分离出来),这应该是常量时间(因为JVM知道对象引用的大小以及它可以计算偏移量的条目数),并且对于这种情况:elementDatanumMoved0

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

答案 2

只需简单使用。

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

推荐