computeIfAbsent()
方法上方注释
如果函数返回null,则不记录映射。如果函数本身抛出(非检查)异常,则会重新抛出异常,并且不记录映射。最常见的用法是构造一个新对象作为初始映射值或记忆结果,如:
map.computeIfAbsent(key, k -> new Value(f(k)));
或者实现一个多值映射,map <K,Collection<V>>,每个键支持多个值:
map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);
if (map.get(key) == null) {
V newValue = mappingFunction.apply(key);
if (newValue != null)
map.put(key, newValue);
}
特别是,子接口ConcurrentMap的所有实现必须记录是否仅在值不存在时才原子地应用函数一次。
@param key 指定值要与之关联的键
@param mappingFunction
@return 与指定键关联的当前值(现有值或计算值),如果计算值为空,则为空
@throws NullPointerException 如果指定的键为空,且此映射不支持空键,或者参数mappingFunctionca为空
@throws UnsupportedOperationException 如果当前map不支持put操作时抛出
@throws ClassCastException 如果key或value的类型不符合时抛出 标签:Map,映射,map,computeIfAbsent,注释,源码,key,null,throws From: https://www.cnblogs.com/liaowenhui/p/16976242.html