java8 replace_java8中map的新方法--replace

譯者:kingviker

Map在Java8中新增了兩個replace的方法

1.replace(k,v)

在指定的鍵已經存在並且有與之相關的映射值時才會將指定的鍵映射到指定的值(新值)

在指定的鍵不存在時,方法會return回來一個null

javadoc的注釋解釋了該默認值方法的實現的等價java代碼:

if (map.containsKey(key)) {

return map.put(key, value);

} else {

return null;

}

下面展示的是新方法和JDK8之前的方法比較:

/*

* 示范Map.replace(K, V)方法並和JDK8之前的實現方法做對比。JDK8

* 中新增的Map.replace(K, V)方法相比於傳統的實現方法,所用的代碼行數更少

* 並且允許用一個final類型的變量來接收返回值。

*/

// JDK8之前的實現方式

String replacedCapitalCity;

if (statesAndCapitals.containsKey("Alaska")) {

replacedCapitalCity = statesAndCapitals.put("Alaska", "Juneau");

}

// JDK8的實現方式

final String replacedJdk8City = statesAndCapitals.replace("Alaska", "Juneau");

2.replace(k,v,v)

第二的新增的Map replace方法在替換現存值方面有更窄的釋義范圍。當那個方法(上一個replace方法)只是涵蓋指定的鍵在映射中有任意一個有效的值的替換處理,而這個“replace”方法接受一個額外的(第三個)參數,只有在指定的鍵和值都匹配的情況下才會替換。

javadoc注釋說明了該默認值方法的實現:

if (map.containsKey(key) && Objects.equals(map.get(key), value)) {

map.put(key, newValue);

return true;

} else {

return false;

}

下面這段代碼列舉展示的是新實現方法和JDK8之前的實現方法的一個具體比較。

/*

* 示范Map.replace(K, V, V)方法並和JDK8之前的實現方法做對比。JDK8

* 中新增的Map.replace(K, V, V)方法相比於傳統的實現方法,所用的代碼行數更少

* 並且允許用一個final類型的變量來接收返回值。

*/

// JDK8之前的實現方式

boolean replaced = false;

if ( statesAndCapitals.containsKey("Nevada")

&& Objects.equals(statesAndCapitals.get("Nevada"), "Las Vegas")) {

statesAndCapitals.put("Nevada", "Carson City");

replaced = true;

}

// JDK8的實現方式

final boolean replacedJdk8 = statesAndCapitals.replace("Nevada", "Las Vegas", "Carson City");



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值