< prev index next >
src/java.base/share/classes/java/util/TreeMap.java
Print this page
*** 1788,1797 ****
--- 1788,1829 ----
if (!inRange(key))
throw new IllegalArgumentException("key out of range");
return m.put(key, value);
}
+ public V putIfAbsent(K key, V value) {
+ if (!inRange(key))
+ throw new IllegalArgumentException("key out of range");
+ return m.putIfAbsent(key, value);
+ }
+
+ public V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
+ if (!inRange(key))
+ throw new IllegalArgumentException("key out of range");
+ return m.merge(key, value, remappingFunction);
+ }
+
+ public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
+ if (!inRange(key)) {
+ if (mappingFunction.apply(key) == null) return null;
+ throw new IllegalArgumentException("key out of range");
+ }
+ return m.computeIfAbsent(key, mappingFunction);
+ }
+
+ public V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
+ if (!inRange(key)) {
+ if (remappingFunction.apply(key, null) == null) return null;
+ throw new IllegalArgumentException("key out of range");
+ }
+ return m.compute(key, remappingFunction);
+ }
+
+ public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
+ return !inRange(key) ? null : m.computeIfPresent(key, remappingFunction);
+ }
+
public final V get(Object key) {
return !inRange(key) ? null : m.get(key);
}
public final V remove(Object key) {
< prev index next >