当前位置: 首页 > 面试题库 >

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

孔征
2023-03-14
问题内容

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

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


问题答案:

请参阅的文档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;
}


 类似资料:
  • 问题内容: 如果满足条件,我需要从中删除一些对象,我想知道哪种方法会更有效。 情况如下:我有一个包含包含其他一些对象的类。我必须对此进行迭代,并删除满足特定条件的所有元素。据我所知,这些是我要删除的选项: 创建一个新的并添加不符合条件的元素。迭代之后,从旧的数组列表交换到没有元素的新数组列表。 创建一个新的并添加满足条件的元素。迭代后,使用传递要删除对象的方法。 有没有更有效的方法从中删除对象?

  • 问题内容: 我有一个具有静态对象ArrayList的ClassA 现在,我要像这样从此列表中删除一个对象 这是用Meteorit类编写的。但是,当我想使用ArrayList中的对象时,它将引发异常。 我使用Iterator从ArrayList中删除对象,但是现在我不知道如何在这种情况下使用它。 问题答案: 这是因为某个线程实际上正在for每个循环中查看此列表,也许您正在尝试在for-each主体中

  • 我正在尝试删除URL的最后一个目录部分。我的URL如下所示: . 当点击按钮时,我想将其更改为 。(拆下最后一部分)。 我已经尝试了,这会导致 。 我应该使用什么正则表达式来执行此操作?

  • 如果字符计数超过200,我正在尝试删除UIText字段中的最后一个字符。但它没有效果:

  • 我有这个数组的对象,我想删除最后一个对象。有人能让我知道这样做吗?

  • 问题内容: 我有一个包含一些对象的对象,例如,每个对象都有一个and 属性。如何从其中仅删除具有特定“名称” 的对象? 问题答案: 您可以使用如下形式: