Java ConcurrentModificationException,我想删除hashmap值中的相同名称
我想使用此方法删除HashMap中的相同名称,但当我尝试编译代码时,会得到ConcurrentModificationExceptionJava 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
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();
}
}