浅谈java8中map的新方法--replace
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");
以上就是小编为大家带来的浅谈java8中map的新方法--replace全部内容了,希望大家多多支持脚本之家~
相关文章
老生常谈spring boot 1.5.4 日志管理(必看篇)
下面小编就为大家带来一篇老生常谈spring boot 1.5.4 日志管理(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-06-06springboot学习笔记之 profile多环境配置切换的实现方式
这篇文章主要介绍了springboot profile多环境配置切换的实现方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下2019-07-07Springboot+WebSocket+Netty实现在线聊天/群聊系统
这篇文章主要实现在好友添加、建群、聊天对话、群聊功能,使用Java作为后端语言进行支持,界面友好,开发简单,文章中有详细的代码示例供大家参考,需要的朋友可以参考下2023-08-08
最新评论