循環中安全刪除集合元素
阿新 • • 發佈:2018-10-06
數組越界 () remove iter move pri system 出現 ger
在循環中刪除集合元素可能出現數組越界的問題,比如:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
for (Integer item : list) {
System.out.println(item);
if (item == 1) {
list.remove(item);
}
}
正確的做法是使用叠代器:
List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Iterator<Integer> iterator = list.iterator(); while (iterator.hasNext()) { Integer i = iterator.next(); System.out.println(i); if (i == 1) iterator.remove(); } for (Integer i : list) { System.out.println(i); }
如果是 ArrayList,也可以倒序遍歷時刪除。
循環中安全刪除集合元素