JAVA8 Map新方法:compute,computeIfAbsent,putIfAbsent与put的区别
本文参考自:Java8(3):Java8 中 Map 接口的新方法
不管存不存在key,都设值:
1. put
put返回旧值,如果没有则返回null
@Testpublic void testMap() {Map<String, String> map = new HashMap<>();map.put("a","A");map.put("b","B");String v = map.put("b","v"); // 输出 BSystem.out.println(v);String v1 = map.put("c","v");System.out.println(v1); // 输出:NULL}
2. compute(相当于put,只不过返回的是新值)
compute:返回新值
当key不存在时,执行value计算方法,计算value
@Testpublic void testMap() {Map<String, String> map = new HashMap<>();map.put("a", "A");map.put("b", "B");String val = map.compute("b", (k, v) -> "v"); // 输出 vSystem.out.println(val);String v1 = map.compute("c", (k, v) -> "v"); // 输出 vSystem.out.println(v1);}
以下几个方法,如果不存在,再put:
1. putIfAbsent
putIfAbsent返回旧值,如果没有则返回null
先计算value,再判断key是否存在
@Testpublic void testMap() {Map<String, String> map = new HashMap<>();map.put("a","A");map.put("b","B");String v = map.putIfAbsent("b","v"); // 输出 BSystem.out.println(v);String v1 = map.putIfAbsent("c","v"); // 输出 nullSystem.out.println(v1);}
2. computeIfAbsent
computeIfAbsent:存在时返回存在的值,不存在时返回新值
参数为:key,value计算方法
当key不存在时,执行value计算方法,计算value
@Testpublic void testMap() {Map<String, String> map = new HashMap<>();map.put("a","A");map.put("b","B");String v = map.computeIfAbsent("b",k->"v"); // 输出 BSystem.out.println(v);String v1 = map.computeIfAbsent("c",k->"v"); // 输出 vSystem.out.println(v1);}
JAVA8 Map新方法:compute,computeIfAbsent,putIfAbsent与put的区别相关推荐
- java8 Map新增方法的使用
文章目录 文章目录 文章目录 java8 Map新增方法的使用 概述 1.compute() 1.使用 2.源码实现 2.computeIfAbsent() 1.使用 2.源码 3.computeIf ...
- 【JAVA8】Map新方法,别再重复造车轮了
文章目录 getOrDefault forEach compute computeIfAbsent computeIfPresent merge putIfAbsent remove(key,valu ...
- 评价目标检测的方法map 新方法 TIDE
导语 物体检测一般使用**map**来评价目标检测的检测效果,如检测效果不好时,需深入了解哪些数据检测效果不好,如何调试模型的性能以及如何优化它获得更好的性能.这时一个好的开源库 TIDE 则 ...
- Java8新特性——Map的新方法
今天是高考的日子,是大四师兄师姐答辩毕业的日子.一代又来,一代又去.好久没写博客,借此特殊日子整理一下前不久学java8新特性时写的代码,留下痕迹.(本博客的代码根据 java8新特性教程 学习整理, ...
- java8中map的新方法--replace
译者:kingviker Map在Java8中新增了两个replace的方法 1.replace(k,v) 在指定的键已经存在并且有与之相关的映射值时才会将指定的键映射到指定的值(新值) 在指定的键不 ...
- Java遍历Map的五种方法(Java8中新lambda方法)
遍历Map的方法, 我总结了5种, CoreJava中给出的是第一种使用forEach+lambda表达式, 我认为这种方法应该是最好的, 但是只能在Java8之后的版本使用; 建议优先使用第一种和第 ...
- Java8 Map中新增的方法使用总结
前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, ...
- Java8 Map 中新增的方法使用记录
得益于 Java 8的 default方法特性,Java 8对 Map增加了不少实用的默认方法,像getOrDefault,forEach,replace,replaceAll,putIfAbsent ...
- 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类
1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...
最新文章
- Linux学习(十三)---搭建JavaEE环境
- 35个设计一流的美味的水果壁纸欣赏
- Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来
- 从 setNeedsLayout 说起
- SAP UI5 message.showMessageToast
- linux设置静态IP及克隆后修改IP和hostname
- satoshi自动上色算法_再见,老照片!百年老照片修复算法,那些高颜值的父母!...
- Waymo无人车卷入严重事故!车身损毁严重,安全员受轻伤
- macOS开机启动项设置
- windows下namp的基本操作命令
- Programer's Tools
- echart坐标轴添加下划线问题
- 爬虫初识(爬取dytt电影列表及下载地址)
- php算html语言吗,为何说PHP 是一种 HTML 内嵌式的语言
- 练习1-自定义input组件库知识要点
- 深度学习中的注意力机制汇总
- 一个Html页面给另一个html页面传值(或B.html页面调用A.html的参数)
- NRF52832开发:普通串口驱动
- java 打印日志log_java打印log日志
- 【可解释性机器学习】详解Python的可解释机器学习库:SHAP
热门文章
- 成都精灵云-C++开发工程师-技术面经(30min左右)
- python 可以用excel做词云图嘛_word_cloud-用Python之作个性化词云图
- 电脑没有鼠标怎么打开计算机,电脑鼠标右键菜单没有打开方式选项怎么办
- Linux---C语言连接数据库(1)
- Java线程(五):Executors、ThreadFactory
- P02014182王子恒信息论作业
- python循环练习题
- 怎么测试视频是哪个软件拍的,李子柒的视频是用什么设备拍摄的,又是用什么软件处理的?...
- 重装java后hadoop配置文件的修改
- 接口偶尔超时,竟又是JVM停顿的锅!