- Map<Integer, String> map = new HashMap<>();
- for (int i = 0; i < 10; i++) {
- map.putIfAbsent(i, "val" + i);
- }
- map.forEach((id, val) -> System.out.println(val));
上面的代码风格是完全自解释的:putIfAbsent避免我们将null写入;forEach接受一个消费者对象,从而将操作实施到每一个map中的值上。
下面的这个例子展示了如何使用函数来计算map的编码:
- map.computeIfPresent(3, (num, val) -> val + num);
- map.get(3); // val33
- map.computeIfPresent(9, (num, val) -> null);
- map.containsKey(9); // false
- map.computeIfAbsent(23, num -> "val" + num);
- map.containsKey(23); // true
- map.computeIfAbsent(3, num -> "bam");
- map.get(3); // val33
接下来,我们将学习,当给定一个key值时,如何把一个实例从对应的key中移除:
- map.remove(3, "val3");
- map.get(3); // val33
- map.remove(3, "val33");
- map.get(3); // null
另一个有用的方法:
- map.getOrDefault(42, "not found"); // not found
将map中的实例合并也是非常容易的:
- map.merge(9, "val9", (value, newValue) -> value.concat(newValue));
- map.get(9); // val9
- map.merge(9, "concat", (value, newValue) -> value.concat(newValue));
- map.get(9); // val9concat
合并操作先看map中是否没有特定的key/value存在,如果是,则把key/value存入map,否则merging函数就会被调用,对现有的数值进行修改。