在集合中使用增强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循环的格式,简化了迭代器的书写。但是在遍历过程中,不能对集合中的元素进行增删操作。