java8中Map的一些騷操作總結(jié)
一 前言
本篇內(nèi)容是關(guān)于 map 新特性的一些方法使用上的介紹,如果有不足之處歡迎補(bǔ)充!!
二 map新特性
關(guān)于以下函數(shù)式編程的函數(shù)的計(jì)算知識(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);
}
值不存在示例,會(huì)使用函數(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 , 會(huì)移除key;
值存在示例,會(huì)使用函數(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 , 會(huì)移除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的值存在時(shí)不替換值;當(dāng)key的值不存在時(shí)替換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的值存在時(shí)獲取值,否則獲取指定的默認(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的值不存在會(huì)用新的值代替,如果key的值存在會(huì)用函數(shù)值代替舊值,當(dāng)函數(shù)值為空會(huì)移除key;
如果key的值不存在會(huì)用新的值(第二參數(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的值存在會(huì)用函數(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ù)值為空會(huì)移除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)文章
SpringBoot集成MongoDB的實(shí)現(xiàn)
本文主要介紹了SpringBoot集成MongoDB的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
盤點(diǎn)總結(jié)SpringBoot自帶工具類使用提升開發(fā)效率
這篇文章主要為大家介紹了盤點(diǎn)總結(jié)SpringBoot自帶工具類使用提升開發(fā)效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
使用Netty實(shí)現(xiàn)類似Dubbo的遠(yuǎn)程接口調(diào)用的實(shí)現(xiàn)方法
本文介紹了如何使用Netty框架實(shí)現(xiàn)類似Dubbo的遠(yuǎn)程接口調(diào)用,通過自定義編解碼器、通信協(xié)議和服務(wù)注冊中心等實(shí)現(xiàn)遠(yuǎn)程通信和服務(wù)治理。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-04-04
如何搭建一個(gè)完整的Java開發(fā)環(huán)境
這篇文章主要教大家如何搭建一個(gè)完整的Java開發(fā)環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
java中線程的sleep()方法和yield()方法的區(qū)別
本文主要介紹了java中線程的sleep()方法和yield()方法的區(qū)別,Thread類的sleep()方法使線程休眠指定時(shí)間,不釋放鎖,而yield()提示調(diào)度器當(dāng)前線程愿意讓出CPU資源,不保證立即切換線程,感興趣的可以了解一下2024-10-10
java后臺(tái)啟動(dòng)jar包的一些命令匯總
這篇文章主要介紹了java后臺(tái)啟動(dòng)jar包的一些命令匯總,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-03-03
學(xué)會(huì)在Java中使用Optional功能
這篇文章主要介紹了學(xué)會(huì)在Java中使用Optional功能,在本文中,我們將了解如何、何時(shí)以及在哪里最好地應(yīng)用Optional,具體相關(guān)內(nèi)容需要的朋友可以參考下面文章內(nèi)容2022-09-09

