在获取密钥之前,有没有更短的方法来查找密钥是否已经存在?
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);