Map在Java8中新增了兩個(gè)replace的方法
1.replace(k,v)
在指定的鍵已經(jīng)存在并且有與之相關(guān)的映射值時(shí)才會(huì)將指定的鍵映射到指定的值(新值)
在指定的鍵不存在時(shí),方法會(huì)return回來一個(gè)null
javadoc的注釋解釋了該默認(rèn)值方法的實(shí)現(xiàn)的等價(jià)Java代碼:
1
2
3
4
5
|
if (map.containsKey(key)) { return map.put(key, value); } else { return null ; } |
下面展示的是新方法和JDK8之前的方法比較:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/* * 示范Map.replace(K, V)方法并和JDK8之前的實(shí)現(xiàn)方法做對(duì)比。JDK8 * 中新增的Map.replace(K, V)方法相比于傳統(tǒng)的實(shí)現(xiàn)方法,所用的代碼行數(shù)更少 * 并且允許用一個(gè)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)那個(gè)方法(上一個(gè)replace方法)只是涵蓋指定的鍵在映射中有任意一個(gè)有效的值的替換處理,而這個(gè)“replace”方法接受一個(gè)額外的(第三個(gè))參數(shù),只有在指定的鍵和值都匹配的情況下才會(huì)替換。
javadoc注釋說明了該默認(rèn)值方法的實(shí)現(xiàn):
1
2
3
4
5
6
|
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)方法的一個(gè)具體比較。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/* * 示范Map.replace(K, V, V)方法并和JDK8之前的實(shí)現(xiàn)方法做對(duì)比。JDK8 * 中新增的Map.replace(K, V, V)方法相比于傳統(tǒng)的實(shí)現(xiàn)方法,所用的代碼行數(shù)更少 * 并且允許用一個(gè)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)容了,希望大家多多支持服務(wù)器之家~