如果应用map计数,当map中不存在这个key时,map.put(key, map.getOrDefault(key, 0) + 1);
能够应用merge,更优雅的实现.代码如下:

@Testpublic void merge() {    Integer key = 4;    Map<Integer, Integer> map = new HashMap<>();    map.put(3, map.getOrDefault(3, 0) + 1);    map.merge(key, 1, Integer::sum);    System.out.println(map.get(3));    System.out.println(map.get(key));    Map<Integer, String> map1 = new HashMap<>();    map1.merge(4, "123", String::concat);    System.out.println(map1.get(key));    // 待定 如何实现呢? 参考:computeIfAbsent    Map<Integer, Set<String>> map2 = new HashMap<>();    // map2.merge(4, "123", Set::add);    System.out.println(map2.get(key));}

输入:

对于下面代码中待定的问题,能够参考下列的代码:

@Testpublic void computeIfAbsent() {    Integer key1 = 4;    Map<Integer, Set<String>> map = new HashMap<>();    map.computeIfAbsent(key1, HashSet::new).add("456");    Integer key = 3;    Set<String> set = new HashSet<>();    set.add("123");    map.put(key, set);    map.computeIfAbsent(key, HashSet::new).add("123456");    System.out.println(map);}

输入:

如果有其余更优雅的写法,欢送留言交换.