參考博客
default方法
map.put(1, "a");
map.put(2, "b");
getOrDefault方法
如果指定的key存在,返回value,不存在,返回指定的值
System.out.pringln(map.getOrDefaullt(4, "d"))
forEach方法
遍歷Map中的所有Entry, 對key, value進行處理
// 輸出1a, 2b, 3c
map.forEach((key, value) -> System.out.println(key + value));
replaceAll方法
替換Map中所有Entry的value值,這個值由舊的key和value計算得出,接收參數 (K, V) -> V, 類似如下代碼
map.replaceAll((key, value) -> (key + 1) + value);
// 輸出 12a 23b 34c
map.forEach((key, value) -> System.out.println(key + value));
putIfAbsent 方法
如果key關聯的value不存在,則關聯新的value值,返回key關聯的舊的值
相當於
V v = map.get(key);
if (v == null)
v = map.put(key, value);
return v;
remove 方法
接收2個參數,key和value,如果key關聯的value值與指定的value值相等(equals),則刪除這個元素
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.remove(key);
return true;
} else
return false;
replace(K key, V oldValue, V newValue) 方法
如果key關聯的值與指定的oldValue的值相等,則替換成新的newValue
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.put(key, newValue);
return true;
} else
return false;
replace(K key, V value) 方法
if (map.containsKey(key)) {
return map.put(key, value);
} else
return null;
computeIfAbsent 方法
如果指定的key不存在,則通過指定的K -> V計算出新的值設置為key的值
if (map.get(key) == null) {
V newValue = mappingFunction.apply(key);
if (newValue != null)
map.put(key, newValue);
}
栗子:
map.computeIfAbsent(1, key -> key + " computed");
// 存在key為1,則不進行計算,輸出值 a
System.out.println(map.get(1));
map.computeIfAbsent(4, key -> key + " computed");
// 不存在key為4,則進行計算,輸出值 4 computed
System.out.println(map.get(4));
computeIfPresent 方法
如果指定的key存在,則根據舊的key和value計算新的值newValue,
如果newValue不為null,則設置key新的值為newValue,
如果newValue為null,則刪除該key的值
if (map.get(key) != null) {
V oldValue = map.get(key);
V newValue = remappingFunction.apply(key, oldValue);
if (newValue != null)
map.put(key, newValue);
else
map.remove(key);
}
eg:
map.computeIfPresent(1, (key, value) -> (key + 1) + value);
// 存在key為1, 則根據舊的key和value計算新的值,輸出 2a
System.out.println(map.get(1));
map.computeIfPresent(2, (key, value) -> null);
// 存在key為2, 根據舊的key和value計算得到null,刪除該值,輸出 null
System.out.println(map.get(2));
merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) 方法
如果指定的key不存在,則設置指定的value值,
否則根據key的舊的值oldvalue,value計算出新的值newValue,
如果newValue為null,
則刪除該key,否則設置key的新值newValue。類似如下代碼
V oldValue = map.get(key);
V newValue = (oldValue == null) ? value :
remappingFunction.apply(oldValue, value);
if (newValue == null)
map.remove(key);
else
map.put(key, newValue);
eg:
// 存在key為1, 輸出 a merge
System.out.println(map.merge(1, " merge", (oldValue, newValue) -> oldValue + newValue));
// 新值為null,刪除key,輸出 null
System.out.println(map.merge(1, " merge", (oldValue, newValue) -> null));
// 輸出 " merge"
System.out.println(map.merge(4, " merge", (oldValue, newValue) -> oldValue + newValue));