1、使用常用的for循环如果进行元素删除操作会导致删除错误的元素。
List<Integer> list = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 6, 5, 1, 4, 1));
for (int i = 0; i < list.size(); i++) {
list.remove(list.get(i));
System.out.println(list);
}
}
没有能正确的删除元素
2、使用增强for循环删除元素会报java.util.ConcurrentModificationException异常
List<Integer> list = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 6, 5, 1, 4, 1));
for (Integer i : list) {
if (i == 1) {
list.remove(i);
}
System.out.println(list);
}
}
3、使用迭代器删除可以正确的完成删除
List<Integer> list = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 6, 5, 1, 4, 1));
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer i = iterator.next();
if (i == 1) {
iterator.remove();
}
System.out.println(list);
}
}
如果只有一个符合条件的元素三种循环都可以完成功能,如果存在多个必须使用迭代器循环删除元素。