--- old/src/share/classes/java/util/Map.java 2013-11-22 16:19:03.535120120 -0800 +++ new/src/share/classes/java/util/Map.java 2013-11-22 16:19:03.315120130 -0800 @@ -1137,8 +1137,6 @@ * remappingFunction.apply(oldValue, value); * if (newValue == null) * map.remove(key); - * else if (oldValue == null) - * map.remove(key); * else * map.put(key, newValue); * } @@ -1170,23 +1168,13 @@ BiFunction remappingFunction) { Objects.requireNonNull(remappingFunction); V oldValue = get(key); - if (oldValue != null) { - V newValue = remappingFunction.apply(oldValue, value); - if (newValue != null) { - put(key, newValue); - return newValue; - } else { - remove(key); - return null; - } + V newValue = (oldValue == null) ? value : + remappingFunction.apply(oldValue, value); + if(newValue == null) { + remove(key); } else { - if (value == null) { - remove(key); - return null; - } else { - put(key, value); - return value; - } + put(key, newValue); } + return newValue; } } --- old/src/share/classes/java/util/concurrent/ConcurrentMap.java 2013-11-22 16:19:04.471120077 -0800 +++ new/src/share/classes/java/util/concurrent/ConcurrentMap.java 2013-11-22 16:19:04.255120087 -0800 @@ -473,8 +473,6 @@ * remappingFunction.apply(oldValue, value); * if (newValue == null) * map.remove(key); - * else if (oldValue == null) - * map.remove(key); * else * map.put(key, newValue); * }