Удаление диапазона (хвоста) из списка

Существует ли эффективный метод удаления диапазона — скажем, хвоста — элементов X из List, например LinkedListв Java?

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

В настоящее время я думаю о заменесписка с помощьюList.subList() , но я не уверен, что это имеет одинаковую производительность. По крайней мере, это было бы более понятно в коде, с другой стороны, я потерял бы дополнительную функциональность, которую предоставляет LinkedList.

В основном я использую список в качестве стека, для которого LinkedListкажется лучшим вариантом, по крайней мере, с точки зрения семантики.

31
задан Maarten Bodewes 25 January 2017 в 15:57
поделиться