删除List和Set中的某些元素
错误代码的写法:
Set<String> set = new HashSet<String>(); set.add("aaaaaa"); set.add("bbbbbb"); set.add("cccccc"); set.add("dddddd"); set.add("eeeeee"); set.add("ffffff"); set.add("gggggg"); for (String str : set) { if ("dddddd".equals(str)) { set.remove(str); } }
运行报错:
Exception in thread "main" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828) at test2.Test1.main(Test1.java:16)
使用如上方式遍历的时候,不能增加、删除set中的数据
正确代码的写法
Set<String> set = new HashSet<String>(); set.add("aaaaaa"); set.add("bbbbbb"); set.add("cccccc"); set.add("dddddd"); set.add("eeeeee"); set.add("ffffff"); set.add("gggggg"); Iterator<String> it = set.iterator(); while (it.hasNext()) { String str = it.next(); if ("dddddd".equals(str)) { it.remove(); } } for (String str : set) { System.out.println(str); }
输出:
aaaaaa
ffffff
eeeeee
bbbbbb
cccccc
gggggg