1. 程式人生 > 其它 >集合遍歷for迴圈和增強for迴圈中刪除元素remove報錯問題

集合遍歷for迴圈和增強for迴圈中刪除元素remove報錯問題

技術標籤:筆記javaiterator

在集合中使用增強for迴圈通過if判斷元素是否滿足條件,然後操作刪除該元素時報錯的坑;

在使用增強for迴圈時程式碼:

        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(1);
        list.add(2);
        list.add(1);
        System.out.println(list + "-----------------");

        for
(Integer a : list) { if (a != 100) { list.remove(a); } else { System.out.println("測試刪除後是否還能繼續"); } } System.out.println(list + "==========="); }

執行結果
在這裡插入圖片描述

使用Iterator迭代器時,程式碼如下:

List<Integer>
list = new ArrayList<>(); list.add(1); list.add(1); list.add(2); list.add(1); System.out.println(list + "--------------"); Iterator<Integer> iterator = list.iterator(); while (iterator.hasNext()) { Integer a =
iterator.next(); if (a != 1) { iterator.remove(); } else { System.out.println("測試刪除後是否還能繼續"); } } System.out.println(list + "==========="); }

結果如下:
在這裡插入圖片描述
雖然增強for迴圈也是迭代器的一種體現,是JDK1.5以後出來的一個高階for迴圈,專門用來遍歷陣列和集合的,底層使用的也是迭代器,使用for迴圈的格式,簡化了迭代器的書寫。但是在遍歷過程中,不能對集合中的元素進行增刪操作。