首页 > 编程语言 >Map源码注释翻译

Map源码注释翻译

时间:2022-12-12 15:58:39浏览次数:53  
标签:Map 映射 map computeIfAbsent 注释 源码 key null throws

computeIfAbsent()

 方法上方注释

如果指定的键尚未与值关联(或映射为null),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非为null。
如果函数返回null,则不记录映射。如果函数本身抛出(非检查)异常,则会重新抛出异常,并且不记录映射。最常见的用法是构造一个新对象作为初始映射值或记忆结果,如:
       map.computeIfAbsent(key, k -> new Value(f(k)));
或者实现一个多值映射,map <K,Collection<V>>,每个键支持多个值:
       map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);

默认实现相当于这个映射的以下步骤,然后返回当前值,如果现在不存在则返回null:
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

相关文章