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

标签 java data-structures arraylist

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

我知道 remove(Object O)ArrayList 中采用 O(n),但我想知道是否可以这样做因为我只想删除 last 对象,所以这是恒定的时间?

最佳答案

the documentation for ArrayList#remove(int) , 语法如下:

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

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

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

关于java - 在 Java 中删除 ArrayList 的最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987727/

相关文章:

java - java - 如何将具有空终止字符的字节数组转换为Java中的字符串?

python - 我在分析 Python 的 Dict 插入运行时间时遇到了什么错误?

c# - 将字符串映射到整数的哈希

java - 如何一次向数组列表添加多个值?

java - Java 中的 ADT 理解 - 将元素添加到 Arraylist 的尾部

java - 从代码创建方法

java - 扫描仪不会停止获取输入

java - Android Studio ThermoCalc 华氏度到摄氏度 反之亦然

python - Python 中列表的循环索引

java - 在 Java 中存储数据的最佳方式是什么? (数组与数组列表)