在循环中删除集合元素可能出现数组越界的问题,比如:
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,也可以倒序遍历时删除。
原文地址:https://www.cnblogs.com/xmsx/p/9747050.html
时间: 2024-10-09 09:03:54