subList(list.size() - N, list.size()).clear() is the recommended way to remove the last
N elements. Indeed, the
Javadoc for subList specifically recommends this idiom:
This method eliminates the need for explicit range operations (of
the sort that commonly exist for arrays). Any operation that expects a
list can be used as a range operation by passing a subList view instead
of a whole list. For example, the following idiom removes a range of
elements from a list:
list.subList(from, to).clear();
Indeed, I suspect that this idiom might be
more efficient (albeit by a constant factor) than calling
removeLast() N times, just because once it finds the
Nth-to-last
node, it only needs to update a constant number of pointers in the
linked list, rather than updating the pointers of each of the last
N nodes one at a time.
No comments:
Post a Comment