映射是由对组成的集合。跟集合相似,但它是一组键值对而不是唯一的元素。唯一的限制在于每个 «键» 必须是唯一的。映射不能包含具有相同键的两个对。
操作 | 方法 |
---|---|
获取所有对的集合 | 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) |
---|---|
源码:
default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
Objects.requireNonNull(remappingFunction);
Objects.requireNonNull(value);
V oldValue = this.get(key);
V newValue = oldValue == null ? value : remappingFunction.apply(oldValue, value);
if (newValue == null) {
this.remove(key);
} else {
this.put(key, newValue);
}
return newValue;
}
作用:
若map中存在key,则将map.get(key)
与value
作为两个参数传给remappingFunction
(这是一个函数式接口,调用了apply
方法),最后返回对新旧两个value做操作的结果
举个例子:
computeIfAbsent
default V | computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) |
---|---|
作用:JDK8中Map类新增的一个方法,用来实现当一个KEY的值缺失的时候,使用给定的映射函数重新计算填充KEY的值并返回结果。
举个例子:
putIfAbsent
default V |
putIfAbsent(K key, V value) |
---|---|
作用:类似于merge,但不如merge功能强大。只能将key对应的旧的value替换为新的value,或者key不存在时添加key-value
返回旧的value,不存在则返回null
举个例子: