未初始化时在 java 映射中初始化一个值
Init a value in java map when not initialized
我有一张地图,通过调用 increaseValue
方法我需要增加它的值。在我检查值是否存在的方法中,如果不存在,我将其初始化并增加它。
private final Map<String, AtomicInteger> map = new ConcurrentHashMap<>();
public void increaseValue(String key) {
map.putIfAbsent(key, new AtomicInteger(0));
map.get(key).incrementAndGet();
}
据我记得在java11这两个操作可以一行完成,不是吗?
即使在 Java8 中,它仍然是可能的。只需使用 computeIfAbsent()
:
map.computeIfAbsent(key, k -> new AtomicInteger(0)).incrementAndGet();
根据 computeIfAbsent
的 javadoc
Returns:
the current (existing or computed) value associated with the specified key, or null if the computed value is null
我有一张地图,通过调用 increaseValue
方法我需要增加它的值。在我检查值是否存在的方法中,如果不存在,我将其初始化并增加它。
private final Map<String, AtomicInteger> map = new ConcurrentHashMap<>();
public void increaseValue(String key) {
map.putIfAbsent(key, new AtomicInteger(0));
map.get(key).incrementAndGet();
}
据我记得在java11这两个操作可以一行完成,不是吗?
即使在 Java8 中,它仍然是可能的。只需使用 computeIfAbsent()
:
map.computeIfAbsent(key, k -> new AtomicInteger(0)).incrementAndGet();
根据 computeIfAbsent
Returns: the current (existing or computed) value associated with the specified key, or null if the computed value is null