getOrDefault方法
这个很好理解,如果get(key)
为空,就返回传入的默认值,否则直接返回。
default V getOrDefault(Object key, V defaultValue) {
V v;
return (((v = get(key)) != null) || containsKey(key))
? v
: defaultValue;
}
putIfAbsent方法
这个很好理解,如果当前key对应value为空,就进行put。否则不做事。
default V putIfAbsent(K key, V value) {
V v = get(key);
if (v == null) {
v = put(key, value);
}
return v;
}
merge方法
这个方法传入的是key, value
,如果 oldValue
为空,那入参value
就直接赋值给newValue
,否则就执行lambda表达式的计算,如果计算出的结果为空,就执行key的删除。
default V merge(K key, V value,
BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
Objects.requireNonNull(remappingFunction);
Objects.requireNonNull(value);
V oldValue = get(key);
V newValue = (oldValue == null) ? value :
remappingFunction.apply(oldValue, value);
if (newValue == null)