java8中Map的一些騷操作總結(jié)
一 前言
本篇內(nèi)容是關(guān)于 map 新特性的一些方法使用上的介紹,如果有不足之處歡迎補(bǔ)充!!
二 map新特性
關(guān)于以下函數(shù)式編程的函數(shù)的計算知識追尋者都使用 簡單字符串代替了,參數(shù)無非就是Key,value;
2.1 forEach
forEach迭代,相當(dāng)于for循環(huán)
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key1","小熊貓"); hashMap.put("key2","大熊貓"); // 遍歷 hashMap.forEach((key,value) -> { System.out.println("key:"+key + " value: "+value); }); }
輸出
key:key1 value: 小熊貓
key:key2 value: 大熊貓
2.2 computeIfAbsentjava
如果key的值不存在就使用函數(shù)結(jié)果代替;
值存在示例,任然是使用舊值;
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); // 如果key的值不存在就使用 函數(shù)值代替 hashMap.computeIfAbsent("key",s-> { return "處處香";}); // {key=無墨生香} System.out.println(hashMap); }
值不存在示例,會使用函數(shù)值代替為新值;
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); // 如果key的值不存在就使用 函數(shù)值代替 hashMap.computeIfAbsent("key",s-> { return "處處香";}); // {key=處處香} System.out.println(hashMap); }
2.3 computeIfPresent
如果key的值存在就使用函數(shù)值代替,如果 函數(shù)值為null , 會移除key;
值存在示例,會使用函數(shù)值代替舊值
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); // 如果key的值存在就使用函數(shù)值代替 hashMap.computeIfPresent("key",(key,value)-> { return "處處香";}); // {key4=處處香} System.out.println(hashMap); }
值不存在示例,為空
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); // 如果key的值存在就使用函數(shù)值代替 hashMap.computeIfPresent("key",(key,value)-> { return "處處香";}); // {} System.out.println(hashMap); }
如果 函數(shù)值為null , 會移除key;
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); // 如果key的值存在就使用函數(shù)值代替 hashMap.computeIfPresent("key",(key,value)-> { return null;}); // {} System.out.println(hashMap); }
2.4 putIfAbsent
當(dāng)key的值存在時不替換值;當(dāng)key的值不存在時替換key的值;
當(dāng)key存在示例,還是舊值;
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); hashMap.putIfAbsent("key","處處香"); //{key=無墨生香} System.out.println(hashMap); }
當(dāng)key不存在其實(shí)就是put操作;
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.putIfAbsent("key","處處香"); //{key=處處香} System.out.println(hashMap); }
2.5 getOrDefault
當(dāng)key的值存在時獲取值,否則獲取指定的默認(rèn)值;
key值存在示例
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); //無墨生香 System.out.println(hashMap.getOrDefault("key","處處香")); }
key值不存在示例
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); //處處香 System.out.println(hashMap.getOrDefault("key","處處香")); }
2.6 merge
如果key的值不存在會用新的值代替,如果key的值存在會用函數(shù)值代替舊值,當(dāng)函數(shù)值為空會移除key;
如果key的值不存在會用新的值(第二參數(shù))代替
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.merge("key","處處香",(key,value) -> { return "點(diǎn)擊在看";}); //{key=處處香} System.out.println(hashMap); }
如果key的值存在會用函數(shù)值代替舊值;新的值(第二參數(shù))不起作用
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); hashMap.merge("key","處處香",(key,value) -> { return "點(diǎn)擊在看";}); //{key=點(diǎn)擊在看} System.out.println(hashMap); }
當(dāng)函數(shù)值為空會移除key;
public static void main(String[] args) { HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("key","無墨生香"); hashMap.merge("key","處處香",(key,value) -> { return null;}); //{} System.out.println(hashMap); }
總結(jié)
到此這篇關(guān)于java8中Map的一些騷操作的文章就介紹到這了,更多相關(guān)java8中Map操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java POI解析Excel 之?dāng)?shù)據(jù)轉(zhuǎn)換公用方法(推薦)
下面小編就為大家?guī)硪黄猨ava POI解析Excel 之?dāng)?shù)據(jù)轉(zhuǎn)換公用方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08Netty客戶端接入流程N(yùn)ioSocketChannel創(chuàng)建解析
這篇文章主要為大家介紹了Netty客戶端接入流程N(yùn)ioSocketChannel創(chuàng)建源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03java實(shí)現(xiàn)百度云OCR文字識別 高精度OCR識別身份證信息
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)百度云OCR文字識別,高精度OCR識別身份證信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11mybatis條件語句中帶數(shù)組參數(shù)的處理
這篇文章主要介紹了mybatis條件語句中帶數(shù)組參數(shù)的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java開發(fā)學(xué)習(xí) Java數(shù)組操作工具
這篇文章主要為大家詳細(xì)介紹了自己編寫的Java數(shù)組操作工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04解決Druid動態(tài)數(shù)據(jù)源配置重復(fù)刷錯誤日志的問題
使用druid數(shù)據(jù)庫連接池實(shí)現(xiàn)動態(tài)的配置數(shù)據(jù)源功能,在配置過程中出現(xiàn)一個問題既然是用戶自己配置的數(shù)據(jù)源,就無法避免輸入錯誤,連接失敗等情況,關(guān)于這個問題怎么處理呢,今天小編通過本文給大家詳細(xì)說明下,感興趣的朋友一起看看吧2021-05-05使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式
這篇文章主要介紹了使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式打包進(jìn) jar包中,本文給大家分享完美解決思路,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06