共计 876 个字符,预计需要花费 3 分钟才能阅读完成。
如果应用 map 计数, 当 map 中不存在这个 key 时,map.put(key, map.getOrDefault(key, 0) + 1);
能够应用 merge, 更优雅的实现. 代码如下:
@Test | |
public 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)); | |
} |
输入:
对于下面代码中待定的问题, 能够参考下列的代码:
@Test | |
public 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); | |
} |
输入:
如果有其余更优雅的写法, 欢送留言交换.
正文完