译者: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");


java8中map的新方法--replace相关推荐

  1. Java8新特性——Map的新方法

    今天是高考的日子,是大四师兄师姐答辩毕业的日子.一代又来,一代又去.好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹.(本博客的代码根据 java8新特性教程 学习整理, ...

  2. Java基础之Java8中map和flatMap的使用

    Java基础之Java8中map和flatMap的使用 一.介绍 首先,看下map和flatMap的官方文档说明 map flatMap 其实单纯的看api说明还是比较抽象,下面我将以几个实战例子来帮 ...

  3. stream map方法_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  4. Java基础之Java8中Map的compute的使用

    Java基础之Java8中Map的compute的使用 一.介绍 Java8更新后,Map接口中提供了compute方法.下面我们先看看官方文档的对它的使用说明. 如果看完上面的还是不太明白的话,看下 ...

  5. java flatmapfunction_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  6. 1.7 Java 8中Map新增的方法

    Java 8 除了为 Map 增加了 remove(Object key, Object value) 默认方法之外,还增加了如下方法. 名称 说明 Object compute(Object key ...

  7. Java8学习--Map的compute方法

    你只会用 map.put?试试 Java 8 compute ,操作 Map 更轻松! 今天栈长分享一个实用的 Java 8 开发技能,那就是 Map 接口中增加的 compute 方法,给 Map ...

  8. Java8中map与flatMap用法

    目录 1 概述 2 map与flatMap 3 常用写法 1 概述 Java8中一些新特性在平时工作中经常会用到,但有时候总感觉不是很熟练,今天特意将这个Java8中的映射记录一下. 2 map与fl ...

  9. Java中Map里put方法的返回值

    在java中,Map里的put方法,如果key值不存在,则返回值是null,但是key值如果存在,则会返回原先被替换掉的value值.(当然,map中的key和value都允许是null). Map ...

最新文章

  1. JBoss Eclipse IDE
  2. [BUUCTF-pwn]——pwnable_echo2
  3. list1与list2求交集的方法总结!
  4. 使用JXL.jar实现JAVA对EXCEL的读写操作
  5. 网易裁员背后,芸芸众生,相煎何急
  6. extjs 实用开发指南_如何提出有效问题:针对开发人员的实用指南
  7. LeetCode 1535. 找出数组游戏的赢家
  8. Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题
  9. (矩阵快速幂)解所有类似Fibonacci 的题目
  10. 重大要素改变中的机会选择包括_种草莓通过IT技术实现,代码“魔法”改变了什么?...
  11. 东方时尚网上约车的用户名密码是什么_网站制作要学什么、在现代网页设计中,动效常见的几种用法...
  12. Soda PDF Desktop Pro(电脑版pdf编辑器软件)官方正式版V12.0.283.16292 | 电脑pdf编辑器哪个好用?
  13. 玩转iOS开发:iOS 8新特性《Share Extension》
  14. 体育赛事系统设计方案
  15. Qt实现Windows风格无边框
  16. 保加利亚 乱码_保加利亚PHP的回顾-游戏开始!
  17. 《郑军的回忆》文章记录了我3年的痛苦过去
  18. 基于Java语言的语法分析器
  19. 思科FTP服务器基本配置
  20. 2000年1月1日,到2020-07-18日,一共多少天?

热门文章

  1. linux虚拟桌面设置不同的背景,给不同虚拟桌面设置不同壁纸,将windows的虚拟桌面最大化使用...
  2. Python 2.7和NLTK安装教程
  3. 懒人玩Arm-2D究竟有几种姿势?
  4. EOF while reading packet
  5. 上帝之眼——GIS技术的决定性作用
  6. 73939133——“我穿越了无数条世界线,却看不到我要的未来”
  7. React tsx 生成随机验证码
  8. 神兵利器——使用LINQ to SQL检索和操作数据库
  9. 计算机组成原理选择题
  10. 使用 NoSQL 数据库提供云级别数据可伸缩性