迭代/更新HashMap

时间:2013-07-08 17:17:17

标签: java map iterator hashmap hashset

我知道有几种方法可以遍历一个hashmap,但是在你进行的过程中修改一个hashmap的好方法是什么(除了创建一个新的hashmap并删除旧的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)
}

在我通过它的时候,我可能会修改我的地图吗?我必须使用迭代器吗?

3 个答案:

答案 0 :(得分:3)

利用地图:首先浏览其他馆藏并进行操作。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在迭代期间不要尝试删除项目,否则您将从迭代器中获取异常。最好的选择是

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

如果您正在更改密钥,则同样适用..随时跟踪并在完成迭代后执行删除/添加。

如果你只是改变价值观,那就去吧。