遍历/更新HashMap



我知道有几种方法可以迭代哈希图,但在进行过程中修改哈希图的好方法是什么(而不仅仅是创建一个新的哈希图并摆脱旧的哈希图)

我想要像一样的东西

for (Map.Entry<String, Integer> entry : wordcounts.entrySet()) {
    String key = entry.getKey();
    Integer value = entry.getValue();
    if(blacklist.contains(key))
        //remove key/value for that key from wordcounts
    if(mappings.contains(key))
     //change key in wordcounts from one string to another based on the key's value in a <string,string> map (mappings)
}

当我浏览地图时,我有可能修改地图吗?我必须使用迭代器吗?

利用映射:首先遍历其他集合并执行操作。

for(String blacklisted : blacklist) {
    wordcounts.remove(blacklisted);
}
for(String mapping : mappings) {
    String oldKey =    // get old key
    String value = wordcounts.get(oldKey);
    wordcounts.remove(oldKey);
    wordcounts.put(mapping, value);
}

使用Map.Entry.setValue更改映射的值。如果要删除映射,请使用setValue(null)使用Iterator

不要试图在迭代过程中删除项,否则迭代器会出现异常。最佳选择是

a) 通过迭代/复制到新地图中来克隆地图,或者b) 跟踪要删除的项目,并在完成迭代后删除它们。

若你们在换钥匙,同样的道理也适用。。保持跟踪,并在完成迭代后执行删除/添加操作。

如果你只是在改变值,那就去做吧。

最新更新