【问题标题】:Init a value in java map when not initialized未初始化时在java map中初始化一个值
【发布时间】:2021-02-12 19:17:46
【问题描述】:

我有一张地图,通过调用increaseValue 方法我需要增加它的价值。在方法中,我检查值是否存在,如果不存在,则初始化它并增加它。

private final Map<String, AtomicInteger> map = new ConcurrentHashMap<>();
 
public void increaseValue(String key) {
    map.putIfAbsent(key, new AtomicInteger(0));
    map.get(key).incrementAndGet();
}

据我记得在 java 11 这两个操作可以在一行中完成,不是吗?

【问题讨论】:

    标签: java java-11 concurrenthashmap


    【解决方案1】:

    即使在 Java 8 中,它仍然是可能的。直接使用computeIfAbsent():

    map.computeIfAbsent(key, k -> new AtomicInteger(0)).incrementAndGet();
    

    根据computeIfAbsent的javadocs

    返回: 与指定键关联的当前(现有或计算的)值,如果计算的值为 null,则为 null

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 2014-12-29
      • 2016-09-25
      • 1970-01-01
      相关资源
      最近更新 更多