Существует ли эффективный метод удаления диапазона — скажем, хвоста — элементов X из List
, например LinkedList
в Java?
Очевидно, что можно удалять последние элементы один за другим, что должно привести к производительности уровня O(X).По крайней мере, для экземпляров LinkedList
должна быть возможность иметь производительность O(1) (устанавливая ссылки вокруг первого удаляемого элемента и устанавливая ссылки начала/конца). К сожалению, я не вижу никакого метода в List
или LinkedList
для удаления всех последних элементов сразу.
В настоящее время я думаю о заменесписка с помощьюList.subList()
, но я не уверен, что это имеет одинаковую производительность. По крайней мере, это было бы более понятно в коде, с другой стороны, я потерял бы дополнительную функциональность, которую предоставляет LinkedList
.
В основном я использую список в качестве стека, для которого LinkedList
кажется лучшим вариантом, по крайней мере, с точки зрения семантики.