Java ConcurrentModificationException,我想删除hashmap值中的相同名称

Java ConcurrentModificationException,我想删除hashmap值中的相同名称,java,iterator,hashmap,Java,Iterator,Hashmap,我想使用此方法删除HashMap中的相同名称,但当我尝试编译代码时,会得到ConcurrentModificationException public static void removeTheFirstNameDuplicates(HashMap<String, String> map) { for (Map.Entry<String, String> pair : map.entrySet()){ String nam

我想使用此方法删除HashMap中的相同名称,但当我尝试编译代码时,会得到ConcurrentModificationException

public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {

        for (Map.Entry<String, String> pair : map.entrySet()){
            String name = pair.getValue();
            removeItemFromMapByValue(map, name);
        }

    }
publicstaticvoid删除firstnameDuplicates(HashMap)
{
for(Map.Entry对:Map.entrySet()){
字符串名称=pair.getValue();
removeItemFromMapByValue(映射,名称);
}
}

在对数据结构进行迭代时不要修改它们-请参阅。

当您使用“增强”for循环时,例如:

for (Map.Entry<String, String> pair : map.entrySet()){
迭代器
将抛出一个
ConcurrentModificationException
,如果有任何内容在迭代集合时修改了集合,除非您调用,它将删除当前元素。您必须使用显式的
迭代器

Iterator<Map.Entry<String, String>> itr = map.entrySet().iterator();
while (itr.hasNext())
{
    Map.Entry<String, String> pair = itr.next();
    if (yourCriteriaIsMet)
    {
        itr.remove();
    }
}
Iterator itr=map.entrySet().Iterator();
while(itr.hasNext())
{
Map.Entry pair=itr.next();
如果(你的标准集)
{
itr.remove();
}
}

不要混淆编译错误和运行时异常/错误。用谷歌搜索异常和异常消息。这是一个复制品,如果我见过的话。
Iterator<Map.Entry<String, String>> itr = map.entrySet().iterator();
while (itr.hasNext())
{
    Map.Entry<String, String> pair = itr.next();
    if (yourCriteriaIsMet)
    {
        itr.remove();
    }
}