淺談java8中map的新方法--replace
Map在Java8中新增了兩個replace的方法
1.replace(k,v)
在指定的鍵已經(jīng)存在并且有與之相關(guān)的映射值時才會將指定的鍵映射到指定的值(新值)
在指定的鍵不存在時,方法會return回來一個null
javadoc的注釋解釋了該默認(rèn)值方法的實現(xiàn)的等價Java代碼:
if (map.containsKey(key)) {
return map.put(key, value);
} else {
return null;
}
下面展示的是新方法和JDK8之前的方法比較:
/*
* 示范Map.replace(K, V)方法并和JDK8之前的實現(xiàn)方法做對比。JDK8
* 中新增的Map.replace(K, V)方法相比于傳統(tǒng)的實現(xiàn)方法,所用的代碼行數(shù)更少
* 并且允許用一個final類型的變量來接收返回值。
*/
// JDK8之前的實現(xiàn)方式
String replacedCapitalCity;
if (statesAndCapitals.containsKey("Alaska")) {
replacedCapitalCity = statesAndCapitals.put("Alaska", "Juneau");
}
// JDK8的實現(xiàn)方式
final String replacedJdk8City = statesAndCapitals.replace("Alaska", "Juneau");
2.replace(k,v,v)
第二的新增的Map replace方法在替換現(xiàn)存值方面有更窄的釋義范圍。當(dāng)那個方法(上一個replace方法)只是涵蓋指定的鍵在映射中有任意一個有效的值的替換處理,而這個“replace”方法接受一個額外的(第三個)參數(shù),只有在指定的鍵和值都匹配的情況下才會替換。
javadoc注釋說明了該默認(rèn)值方法的實現(xiàn):
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.put(key, newValue);
return true;
} else {
return false;
}
下面這段代碼列舉展示的是新實現(xiàn)方法和JDK8之前的實現(xiàn)方法的一個具體比較。
/*
* 示范Map.replace(K, V, V)方法并和JDK8之前的實現(xiàn)方法做對比。JDK8
* 中新增的Map.replace(K, V, V)方法相比于傳統(tǒng)的實現(xiàn)方法,所用的代碼行數(shù)更少
* 并且允許用一個final類型的變量來接收返回值。
*/
// JDK8之前的實現(xiàn)方式
boolean replaced = false;
if ( statesAndCapitals.containsKey("Nevada")
&& Objects.equals(statesAndCapitals.get("Nevada"), "Las Vegas")) {
statesAndCapitals.put("Nevada", "Carson City");
replaced = true;
}
// JDK8的實現(xiàn)方式
final boolean replacedJdk8 = statesAndCapitals.replace("Nevada", "Las Vegas", "Carson City");
以上就是小編為大家?guī)淼臏\談java8中map的新方法--replace全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
淺談js文件引用方式及其同步執(zhí)行與異步執(zhí)行
下面小編就為大家?guī)硪黄獪\談js文件引用方式及其同步執(zhí)行與異步執(zhí)行。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)
這篇文章主要介紹了IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新),小編測試這種激活工具也適用idea2022以下所有版本,本篇教程整理的比較詳細(xì),匯總了idea各個版本的激活工具,激活方法多種多樣,大家選擇一種即可,感興趣的朋友跟隨小編一起看看吧2022-09-09
SpringBoot 使用 OpenAPI3 規(guī)范整合 knife4j的詳細(xì)過程
Swagger工具集使用OpenAPI規(guī)范,可以生成、展示和測試基于OpenAPI規(guī)范的API文檔,并提供了生成客戶端代碼的功能,本文給大家介紹SpringBoot使用OpenAPI3規(guī)范整合knife4j的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧2023-12-12
Java?在?Array?和?Set?之間進(jìn)行轉(zhuǎn)換的示例
這篇文章主要介紹了Java如何在Array和Set之間進(jìn)行轉(zhuǎn)換,在本文章中,我們對如何在?Java?中對Array和Set進(jìn)行轉(zhuǎn)換進(jìn)行一些說明和示例,需要的朋友可以參考下2023-05-05
SpringBoot如何通過devtools實現(xiàn)熱部署
這篇文章主要介紹了SpringBoot如何通過devtools實現(xiàn)熱部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
使用注解解決ShardingJdbc不支持復(fù)雜SQL方法
這篇文章主要為大家介紹了使用注解解決ShardingJdbc不支持復(fù)雜SQL方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

