我知道在迭代期间不应修改集合。因此,我们应该有解决方法。
我有一个代码:
Map<Key, Value> map = getMap(); // map generating is hidden
for (Key key : map.keySet()) {
if (isToRemove(key)) {
map.remove(key);
} else {
map.put(key, getNewValue());
}
}
Run Code Online (Sandbox Code Playgroud)
是未定义的行为还是有效的代码?
keySet文档说,映射的更改反映在返回的set中,反之亦然。这是否意味着以前的代码是不可接受的?