微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在迭代时从 HashMap 中删除一个键?

如何解决如何在迭代时从 HashMap 中删除一个键?

尝试:

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()));

解决方法

HashMap打电话给testMapwhich contains String,String

HashMap<String,String> testMap = new HashMap<String,String>();

迭代地图时,如果value与指定的字符串匹配,我需要从地图中删除键。

IE

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)"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。