前言
最近在做项目时发现一个很实用的方法map.merge(),开发了这么久头一回见到这玩意,想必我应该不是最后一个知道的吧,废话不多说,看源码
通俗的讲就是当key不存在时做put(key, value)操作,当key存在时,我们可以通过函数式接口remappingFunction将传入的value和旧值合并的方式成一个newValue ,然后将合并得到的 newValue 赋值给原先的 key
实战
public class Test {
public static void main(String[] args) {
List<String> list = Arrays.asList("1", "1", "1", "1", "2", "3", "4");
Map<String, Integer> map = new HashMap<>(16);
list.forEach(item -> {
map.merge(item, 1, Integer::sum);
});
System.out.println(map);
}
}
结果
总结
map.merge()适用一些一对多的值处理场景,在代码中使用也可以让人眼前一亮