Подтвердить что ты не робот

Удаление последнего объекта ArrayList в Java

Я хочу быстро удалить последний объект из ArrayList.

Я знаю, что remove(Object O) принимает O(n) в ArrayList, но мне интересно, можно ли это сделать в постоянное время, так как просто хочу удалить объект last?

4b9b3361

Ответ 1

Смотрите документацию для 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;
}

Ответ 2

Просто используйте 2 метода.

remove() and size()

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