src/share/classes/java/util/Map.java
Print this page
rev 7313 : 8016446: Improve forEach/replaceAll for Map, HashMap, Hashtable, IdentityHashMap, WeakHashMap, TreeMap
Reviewed-by: forax, duigou
Contributed-by: Mike Duigou <mike.duigou@oracle.com>, Remi Forax <forax@univ-mlv.fr>
*** 543,552 ****
--- 543,553 ----
V v;
try {
k = entry.getKey();
v = entry.getValue();
} catch(IllegalStateException ise) {
+ // this usually means the entry is no longer in the map.
throw new ConcurrentModificationException(ise);
}
action.accept(k, v);
}
}
*** 597,609 ****
V v;
try {
k = entry.getKey();
v = entry.getValue();
} catch(IllegalStateException ise) {
throw new ConcurrentModificationException(ise);
}
- entry.setValue(function.apply(k, v));
}
}
/**
* If the specified key is not already associated with a value (or is mapped
--- 598,620 ----
V v;
try {
k = entry.getKey();
v = entry.getValue();
} catch(IllegalStateException ise) {
+ // this usually means the entry is no longer in the map.
+ throw new ConcurrentModificationException(ise);
+ }
+
+ // ise thrown from function is not a cme.
+ v = function.apply(k, v);
+
+ try {
+ entry.setValue(v);
+ } catch(IllegalStateException ise) {
+ // this usually means the entry is no longer in the map.
throw new ConcurrentModificationException(ise);
}
}
}
/**
* If the specified key is not already associated with a value (or is mapped