淺談java8中map的新方法--replace
Map在Java8中新增了兩個replace的方法
1.replace(k,v)
在指定的鍵已經(jīng)存在并且有與之相關(guān)的映射值時才會將指定的鍵映射到指定的值(新值)
在指定的鍵不存在時,方法會return回來一個null
javadoc的注釋解釋了該默認(rèn)值方法的實(shí)現(xiàn)的等價Java代碼:
if (map.containsKey(key)) { return map.put(key, value); } else { return null; }
下面展示的是新方法和JDK8之前的方法比較:
/* * 示范Map.replace(K, V)方法并和JDK8之前的實(shí)現(xiàn)方法做對比。JDK8 * 中新增的Map.replace(K, V)方法相比于傳統(tǒng)的實(shí)現(xiàn)方法,所用的代碼行數(shù)更少 * 并且允許用一個final類型的變量來接收返回值。 */ // JDK8之前的實(shí)現(xiàn)方式 String replacedCapitalCity; if (statesAndCapitals.containsKey("Alaska")) { replacedCapitalCity = statesAndCapitals.put("Alaska", "Juneau"); } // JDK8的實(shí)現(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)值方法的實(shí)現(xiàn):
if (map.containsKey(key) && Objects.equals(map.get(key), value)) { map.put(key, newValue); return true; } else { return false; }
下面這段代碼列舉展示的是新實(shí)現(xiàn)方法和JDK8之前的實(shí)現(xiàn)方法的一個具體比較。
/* * 示范Map.replace(K, V, V)方法并和JDK8之前的實(shí)現(xiàn)方法做對比。JDK8 * 中新增的Map.replace(K, V, V)方法相比于傳統(tǒng)的實(shí)現(xiàn)方法,所用的代碼行數(shù)更少 * 并且允許用一個final類型的變量來接收返回值。 */ // JDK8之前的實(shí)現(xiàn)方式 boolean replaced = false; if ( statesAndCapitals.containsKey("Nevada") && Objects.equals(statesAndCapitals.get("Nevada"), "Las Vegas")) { statesAndCapitals.put("Nevada", "Carson City"); replaced = true; } // JDK8的實(shí)現(xiàn)方式 final boolean replacedJdk8 = statesAndCapitals.replace("Nevada", "Las Vegas", "Carson City");
以上就是小編為大家?guī)淼臏\談java8中map的新方法--replace全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
老生常談spring boot 1.5.4 日志管理(必看篇)
下面小編就為大家?guī)硪黄仙U剆pring boot 1.5.4 日志管理(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06springboot學(xué)習(xí)筆記之 profile多環(huán)境配置切換的實(shí)現(xiàn)方式
這篇文章主要介紹了springboot profile多環(huán)境配置切換的實(shí)現(xiàn)方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07MyBatis-plus實(shí)現(xiàn)逆向生成器
本文主要介紹了MyBatis-plus實(shí)現(xiàn)逆向生成器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08java獲取當(dāng)前時間和前一天日期(實(shí)現(xiàn)代碼)
java獲取當(dāng)前時間和前一天日期的實(shí)現(xiàn)代碼。需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10Springboot+WebSocket+Netty實(shí)現(xiàn)在線聊天/群聊系統(tǒng)
這篇文章主要實(shí)現(xiàn)在好友添加、建群、聊天對話、群聊功能,使用Java作為后端語言進(jìn)行支持,界面友好,開發(fā)簡單,文章中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-08-08SpringBoot之整合MyBatis實(shí)現(xiàn)CRUD方式
這篇文章主要介紹了SpringBoot之整合MyBatis實(shí)現(xiàn)CRUD方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08關(guān)于Lists.partition集合分組使用以及注意事項(xiàng)
這篇文章主要介紹了關(guān)于Lists.partition集合分組使用以及注意事項(xiàng),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01