编写一个方法 removeEvenLength ,它接受一组字符串作为参数,并从集合中删除所有偶数长度的字符串。
我的解决方案:
public static void removeEvenLength(Set<String> set) {
for(String word : set) {
if(word.length() % 2 == 0) {
set.remove(word);
}
}
}
输入:
[foo, buzz, bar, fork, bort, spoon, !, dude]
输出:
ConcurrentModificationException on line 2:
java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1115)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1169)
at removeEvenLength (Line 2)
所以我可以通过创建一个Iterator
. 但是我想知道为什么上面的代码不起作用?
编辑:
迭代器也不起作用:
public static void removeEvenLength(Set<String> set) {
Iterator<String> i = set.iterator();
while(i.hasNext()) {
String word = i.next();
if(word.length() % 2 == 0) {
set.remove(word);
}
}
}
同样的错误。