在 java 中使用 Map 时,针对 key 进行数值的累计运算,需要指定键不存在时,设置初始值,特定 key 存在时,对已有键值进行累加。
参考方案
java 8 中,Map 中增加了 getOrDefault 方法,该方法在指定 key 不存在时,可以指定默认的返回值,利用该方法示例代码如下:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapDemo {
public static void main(String[] args) {
Map<String, Float> map = new HashMap<>();
List<KV> kvList = new ArrayList<>();
kvList.add(new KV("knowledge", 16f));
kvList.add(new KV("dict", 8f));
kvList.add(new KV("knowledge", 2f));
incrementMapValue(map, kvList);
System.out.println(map);
}
// map 指定 key 累加值方法
public static void incrementMapValue(Map<String, Float> map, List<KV> kvList) {
for (KV kv : kvList) {
map.put(kv.getKey(), map.getOrDefault(kv.getKey(), 0f) + kv.getValue());
}
}
static class KV {
private String key;
private Float value;
public KV(String key, Float value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Float getValue() {
return value;
}
public void setValue(Float value) {
this.value = value;
}
}
}
输出结果如下:
{dict=8.0, knowledge=18.0}