java-api-Collection-List在遍历的同时删除可能会出现问题
一般来说,有三种方式可以用来遍历一个集合:传统的for循环、for(Object item:list)类型、用iterator遍历。但是当边遍历,边删除集合元素的时候,可能会出现问题。
List<String> list = new LinkedList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
System.out.println("遍历前:"+list);
//传统for循环
// for(int i=0;i<list.size();i++) {
// String item = list.get(i);
// if("3".equals(item)) {
// list.remove(i);
// }
// System.out.print(item);
// }
// Iterator iter = list.iterator();
// while(iter.hasNext()) {
// String str = (String)iter.next();
// System.out.println(str);
// if("3".equals(str)) {
// iter.remove();
// }
// }
for(String item:list) {
if("3".equals(item)) {
list.remove(item);
}
}
System.out.println(list);
其中,第一种方式会有漏掉某个元素的现象,第二种不会出现问题,第三种会出现编译错误。

浙公网安备 33010602011771号