[英]Java LinkedList iterator: Remove current element and all elements after it
從理論上講,通過將已刪除的引用設置為null,LinkedList允許您輕松地在恆定時間內刪除列表的尾部。
實際上,Java的LinkedList如何讓您做到這一點?
例如:
Iterator<Integer> iterator = linkedList.iterator();
while (iterator.hasNext()) {
if (iterator.next() % 2 == 0) {
iterator.removeAllAfterThisPoint(); // how can we do this?
}
}
如果我理解您的問題,則您嘗試從第一個偶數之后的LinkedList
刪除所有元素。 我的解決方案是獲取出現偶數的索引,並使用subList(fromIndex, toIndex)
刪除toIndex
之后的所有元素。
public static void main(String[] args) {
List<Integer> list = new LinkedList<>(Arrays.asList(3, 7, 9, 2, 4, 5, 17));
ListIterator<Integer> iterator = list.listIterator();
int toIndex = 0;
while (iterator.hasNext()) {
if (iterator.next() % 2 == 0) {
toIndex = iterator.nextIndex();
break;
}
}
list = list.subList(0, toIndex);
list.forEach(System.out::println);
}
輸入:
3
7
9
2
4
5
17
輸出:
3
7
9
2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.