当我尝试运行这段代码时
void wordsContainingLetter(char c){
for(String s:wordbank.keySet()){
char[] chars = s.toCharArray();
boolean contains=false;
for (char ch:chars) {
if(ch==c){
contains=true;
break;
}
}
if(!contains){
wordbank.remove(s);
}
}
}
它给了我这个错误在for each循环Exception in thread "main" java.util.ConcurrentModificationException
这是hashmap的定义HashMap<String,Integer> wordbank = new HashMap<String,Integer>();
它不是空的当代码运行时
我希望for each循环遍历hashmap
2条答案
按热度按时间8yparm6h1#
我知道你说你已经弄明白了,但是因为你使用的是
HashMap
,所以有一种更简单的方法可以使用内置的removeAll
方法。试试这个
oxf4rvwz2#
我发现了问题所在。因为我正在循环它并试图同时从其中删除某些内容,所以它引起了冲突。所以我将创建一个新的散列表,其中包含我想要删除的内容,然后通过新的散列表并从主词库中删除