foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,不然会发生异常。如果并发操作,需要对Iterator对象加锁。
反例:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
for (String item : list) {
if ("2".equals(item)) {
list.remove(item);
}
}
}
正例:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if ("2".equals(item)) {
iterator.remove();
}
}
System.out.println(list);
}