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