集合遍歷for迴圈和增強for迴圈中刪除元素remove報錯問題
阿新 • • 發佈:2021-02-08
在集合中使用增強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迴圈的格式,簡化了迭代器的書寫。但是在遍歷過程中,不能對集合中的元素進行增刪操作。