在以最短的方式获取密钥之前,如何检查hashmap是否包含密钥



在获取密钥之前,有没有更短的方法来查找密钥是否已经存在?

Map<String, Double> map = new HashMap<>();
if (map.containsKey("2")) {
fee.put("2", fee.get("2") + 12.00);
} else {
fee.put("2", 12.00);
}

我想把价值加起来。

最简洁的方法是:

map.merge(key, 12.0, Double::sum);

如Javadoc中所述,此默认实现等效于:

V oldValue = map.get(key);
V newValue = (oldValue == null) ? value :
remappingFunction.apply(oldValue, value);
if (newValue == null)
map.remove(key);
else
map.put(key, newValue);

其中在这种情况下CCD_ 1是CCD_。

您可以从Map中重构它以使用getOrDefault方法,如下所示:

Map<String, Double> fee = new HashMap<>();
fee.put("2", fee.getOrDefault("2", 0.0) + 12.00);

另一种方法是使用Optionals:

Map<String, Double> fee = new HashMap<>();
fee.put("2", Optional.ofNullable(fee.get("2")).orElse(0.0) + 12.00);

最新更新