新增方法java_Java8_map新增方法
參考博客
default方法
map.put(1, "a");
map.put(2, "b");
getOrDefault方法
如果指定的key存在,返回value,不存在,返回指定的值
System.out.pringln(map.getOrDefaullt(4, "d"))
forEach方法
遍歷Map中的所有Entry, 對key, value進(jìn)行處理
// 輸出1a, 2b, 3c
map.forEach((key, value) -> System.out.println(key + value));
replaceAll方法
替換Map中所有Entry的value值,這個(gè)值由舊的key和value計(jì)算得出,接收參數(shù) (K, V) -> V, 類似如下代碼
map.replaceAll((key, value) -> (key + 1) + value);
// 輸出 12a 23b 34c
map.forEach((key, value) -> System.out.println(key + value));
putIfAbsent 方法
如果key關(guān)聯(lián)的value不存在,則關(guān)聯(lián)新的value值,返回key關(guān)聯(lián)的舊的值
相當(dāng)于
V v = map.get(key);
if (v == null)
v = map.put(key, value);
return v;
remove 方法
接收2個(gè)參數(shù),key和value,如果key關(guān)聯(lián)的value值與指定的value值相等(equals),則刪除這個(gè)元素
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關(guān)聯(lián)的值與指定的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計(jì)算出新的值設(shè)置為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,則不進(jìn)行計(jì)算,輸出值 a
System.out.println(map.get(1));
map.computeIfAbsent(4, key -> key + " computed");
// 不存在key為4,則進(jìn)行計(jì)算,輸出值 4 computed
System.out.println(map.get(4));
computeIfPresent 方法
如果指定的key存在,則根據(jù)舊的key和value計(jì)算新的值newValue,
如果newValue不為null,則設(shè)置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, 則根據(jù)舊的key和value計(jì)算新的值,輸出 2a
System.out.println(map.get(1));
map.computeIfPresent(2, (key, value) -> null);
// 存在key為2, 根據(jù)舊的key和value計(jì)算得到null,刪除該值,輸出 null
System.out.println(map.get(2));
merge(K key, V value, BiFunction super V, ? super V, ? extends V> remappingFunction) 方法
如果指定的key不存在,則設(shè)置指定的value值,
否則根據(jù)key的舊的值oldvalue,value計(jì)算出新的值newValue,
如果newValue為null,
則刪除該key,否則設(shè)置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));
總結(jié)
以上是生活随笔為你收集整理的新增方法java_Java8_map新增方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java监控对话框是否关闭_java –
- 下一篇: java美元兑换,(Java实现) 美元