標籤:
刪除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);}
輸出:
aaaaaaffffffeeeeeebbbbbbccccccgggggg
Java 迴圈遍曆刪除set list中的元素