我的HashMap
名为testMap
,其中包含String, String
。
HashMap<String, String> testMap = new HashMap<String, String>();
在迭代地图时,如果value
与指定的字符串匹配,我需要从地图中删除该键。
即
for(Map.Entry<String, String> entry : testMap.entrySet()) {
if(entry.getValue().equalsIgnoreCase("Sample")) {
testMap.remove(entry.getKey());
}
}
testMap
包含"Sample"
,但我无法从HashMap
中删除密钥。
而是得到错误:
"Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)
at java.util.HashMap$EntryIterator.next(Unknown Source)"
答案 0 :(得分:295)
尝试:
Iterator<Map.Entry<String,String>> iter = testMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String,String> entry = iter.next();
if("Sample".equalsIgnoreCase(entry.getValue())){
iter.remove();
}
}
使用Java 1.8及更高版本,您只需一行即可完成上述操作:
testMap.entrySet().removeIf(entry -> "Sample".equalsIgnoreCase(entry.getValue()));
答案 1 :(得分:15)
答案 2 :(得分:-35)
要从hashmap中删除特定的键和元素,请使用
hashmap.remove(key)
完整源代码就像
import java.util.HashMap;
public class RemoveMapping {
public static void main(String a[]){
HashMap hashMap = new HashMap();
hashMap.put(1, "One");
hashMap.put(2, "Two");
hashMap.put(3, "Three");
System.out.println("Original HashMap : "+hashMap);
hashMap.remove(3);
System.out.println("Changed HashMap : "+hashMap);
}
}