我有一个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);
}
假设我已经进行了所有空检查,我认为在迭代时获取不同的项目并修改它的值是安全的。有人可以证实吗?谢谢!
答案 0 :(得分:1)
是的,这是安全的。迭代Map
时无法进行的唯一更改是添加或删除条目的更改。 (实际上,您可以使用Iterator
的{{1}}方法删除条目。获得价值并改变它是可以的。