Map源码注释翻译
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的类型不符合时抛出
希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt

浙公网安备 33010602011771号