簡體   English   中英

Java LinkedList迭代器:刪除當前元素及其后的所有元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM