迭代Hashmap时更新不同的项目

时间:2015-10-30 03:32:22

标签: java dictionary iterator hashmap

我有一个hashmap,我在EntrySet上迭代。在迭代然后更新它的价值时,从地图中获取不同的项目是否安全?

for (Entry<String, EmpData> entry : strEmpDataMap.entrySet()) {
    EmpData data = entry.getValue();
    String manager = data.getManager();
    // getting different item from same map inside loop and updating value
    EmpData managerData = strEmpDataMap.get(manager);
    managerData.setRepCount(managerData.getRepCount() + 1);
}

假设我已经进行了所有空检查,我认为在迭代时获取不同的项目并修改它的值是安全的。有人可以证实吗?谢谢!

1 个答案:

答案 0 :(得分:1)

是的,这是安全的。迭代Map时无法进行的唯一更改是添加或删除条目的更改。 (实际上,您可以使用Iterator的{​​{1}}方法删除条目。获得价值并改变它是可以的。