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