1.7 Java 8中Map新增的方法
生活随笔
收集整理的這篇文章主要介紹了
1.7 Java 8中Map新增的方法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Java 8 除了為 Map 增加了 remove(Object key, Object value) 默認(rèn)方法之外,還增加了如下方法。
| Object compute(Object key, BiFunction remappingFunction) | 該方法使用 remappingFunction 根據(jù)原 key-value 對計(jì)算一個(gè)新 value。只要新 value 不為 null,就使用新 value 覆蓋原 value;如果原 value 不為 null,但新 value 為 null,則刪除原 key-value 對;如果原 value、新 value 同時(shí)為 null,那么該方法不改變?nèi)魏?key-value 對,直接返回 null。 |
| Object computeIfAbsent(Object key, Function mappingFunction) | 如果傳給該方法的 key 參數(shù)在 Map 中對應(yīng)的 value 為 null,則使用 mappingFunction 根據(jù) key 計(jì)算一個(gè)新的結(jié)果,如果計(jì)算結(jié)果不為 null,則用計(jì)算結(jié)果覆蓋原有的 value。如果原 Map 原來不包括該 key,那么該方法可能會添加一組 key-value 對。 |
| Object computeIfPresent(Object key, BiFunction remappingFunction) | 如果傳給該方法的 key 參數(shù)在 Map 中對應(yīng)的 value 不為 null,該方法將使用 remappingFunction 根據(jù)原 key、value 計(jì)算一個(gè)新的結(jié)果,如果計(jì)算結(jié)果不為 null,則使用該結(jié)果覆蓋原來的 value;如果計(jì)算結(jié)果為 null,則刪除原 key-value 對。 |
| void forEach(BiConsumer action) | 該方法是 Java 8 為 Map 新增的一個(gè)遍歷 key-value 對的方法,通過該方法可以更簡潔地遍歷 Map 的 key-value 對。 |
| Object getOrDefault(Object key, V defaultValue) | 獲取指定 key 對應(yīng)的 value。如果該 key 不存在,則返回 defaultValue。 |
| Object merge(Object key, Object value, BiFunction remappingFunction) | 該方法會先根據(jù) key 參數(shù)獲取該 Map 中對應(yīng)的 value。如果獲取的 value 為 null,則直接用傳入的 value 覆蓋原有的 value(在這種情況下,可能要添加一組 key-value 對);如果獲取的 value 不為 null,則使用 remappingFunction 函數(shù)根據(jù)原 value、新 value 計(jì)算一個(gè)新的結(jié)果,并用得到的結(jié)果去覆蓋原有的 value。 |
| Object putIfAbsent(Object key, Object value) | 該方法會自動檢測指定 key 對應(yīng)的 value 是否為 null,如果該 key 對應(yīng)的 value 為 null,該方法將會用新 value 代替原來的 null 值。 |
| Object replace(Object key, Object value) | 將 Map 中指定 key 對應(yīng)的 value 替換成新 value。與傳統(tǒng) put() 方法不同的是,該方法不可能添加新的 key-value 對。如果嘗試替換的 key 在原 Map 中不存在,該方法不會添加 key-value 對,而是返回 null。 |
| boolean replace(K key, V oldValue, V newValue) | 將 Map 中指定 key-value 對的原 value 替換成新 value。如果在 Map 中找到指定的 key-value 對,則執(zhí)行替換并返回 true,否則返回 false。 |
| replaceAll(BiFunction function) | 該方法使用 BiFunction 對原 key-value 對執(zhí)行計(jì)算,并將計(jì)算結(jié)果作為該 key-value 對的 value 值。 |
下面程序示范了 Map 常用默認(rèn)方法的功能和用法。
import java.util.HashMap; import java.util.Map;public class Test {public static void main(String[] args) {Map map=new HashMap();map.put("天空", 90);map.put("陸地", 60);map.put("海洋", 30);map.put("異世界", 0);//嘗試替換key為“地獄”的value,猶豫map中沒有對應(yīng)的key,map沒有改變,不會添加新的key-valuemap.replace("地獄", -18);System.out.println(map);// 使用原value與傳入?yún)?shù)計(jì)算出來的結(jié)果覆蓋原有的valuemap.merge("天空", 90, (oldVal, param) -> (Integer) oldVal * (Integer) param);System.out.println(map);//當(dāng)key為“煉獄”對應(yīng)的value為null(或不存在)時(shí),使用計(jì)算的結(jié)果作為新valuemap.computeIfAbsent("煉獄",(key)->((String)key).length()*2);System.out.println(map);//map 中添加了煉獄=4 這組 key-value 對// 當(dāng)key為"Java"對應(yīng)的value存在時(shí),使用計(jì)算的結(jié)果作為新valuemap.computeIfPresent("煉獄", (key, value) -> (Integer) value * (Integer) value);System.out.println(map); // map 中 煉獄=4 變成 煉獄=16} } {異世界=0, 陸地=60, 海洋=30, 天空=90} {異世界=0, 陸地=60, 海洋=30, 天空=8100} {異世界=0, 陸地=60, 海洋=30, 天空=8100, 煉獄=4} {異世界=0, 陸地=60, 海洋=30, 天空=8100, 煉獄=16}上面程序中注釋已經(jīng)寫得很清楚了,而且給出了每個(gè)方法的運(yùn)行結(jié)果,讀者可以結(jié)合這些方法的 API 文檔來閱讀學(xué)習(xí),從而掌握 Map 中默認(rèn)方法的功能與用法。
總結(jié)
以上是生活随笔為你收集整理的1.7 Java 8中Map新增的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.5 Map集合:HashMap 和T
- 下一篇: 1.8 Collections类操作集合