映射是由对组成的集合。跟集合相似,但它是一组键值对而不是唯一的元素。唯一的限制在于每个 «键» 必须是唯一的。映射不能包含具有相同键的两个对。

操作 方法
获取所有对的集合 entrySet()
获取所有键的集合 keySet()
获取所有值的集合 values()
添加对 put(key, value)
获取指定键的值 get(key)
检查指定键是否存在 containsKey(key)
检查指定值是否存在 containsValue(value)
检查映射是否为空 isEmpty()
清除映射 clear()
删除指定键的值 remove(key)

merge

default [V](../../java/util/Map.html) [**merge**](../../java/util/Map.html#merge-K-V-java.util.function.BiFunction-)([K](../../java/util/Map.html) key, [V](../../java/util/Map.html) value, [BiFunction](../../java/util/function/BiFunction.html)<? super [V](../../java/util/Map.html),? super [V](../../java/util/Map.html),? extends [V](../../java/util/Map.html)> remappingFunction)

源码:

  1. default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
  2. Objects.requireNonNull(remappingFunction);
  3. Objects.requireNonNull(value);
  4. V oldValue = this.get(key);
  5. V newValue = oldValue == null ? value : remappingFunction.apply(oldValue, value);
  6. if (newValue == null) {
  7. this.remove(key);
  8. } else {
  9. this.put(key, newValue);
  10. }
  11. return newValue;
  12. }

作用:
若map中存在key,则将map.get(key)value作为两个参数传给remappingFunction(这是一个函数式接口,调用了apply方法),最后返回对新旧两个value做操作的结果

举个例子:

image.png

computeIfAbsent

default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)

作用:JDK8中Map类新增的一个方法,用来实现当一个KEY的值缺失的时候,使用给定的映射函数重新计算填充KEY的值并返回结果。
举个例子:
image.png

putIfAbsent

default V putIfAbsent(K key, V value)

作用:类似于merge,但不如merge功能强大。只能将key对应的旧的value替换为新的value,或者key不存在时添加key-value
返回旧的value,不存在则返回null

举个例子:
image.png