代码示例:
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("test1", 1);
map.merge("test1", 1, Integer::sum);
map.merge("test1", 1, (v1, v2) -> v1 + v2);
System.out.println(map);
}
执行结果:
{test1=3}
总结:
Map.merge() 功能为将 value 合并而生,第三个参数用于设置合并算法。
补充:
merge() 的第三个参数中,函数式接口的入参应该用 v1
和 v2
来命名。
因为第三个参数是对 Map 中 value 的操作,很多人误写为 k1 或 key1,实际上是错误的理解。以下为 Java8 中对 merge() 方法的官方文档,可以看到使用 value 来命名更为贴切: