Java Map中compute,computeIfAbsent,computeIfPresent的区别
2023-09-14 09:06:15 时间
Java Map中compute,computeIfAbsent,computeIfPresent的区别
结论:
compute()
,该方法的作用是向map中添加键值对,无论该键是否存在
。如果存在,则覆盖原来的键值对,如果不存在,则添加新的键值对。computeIfAbsent()
,顾名思义,该方法的作用是向map中添加键值对
,如果不存在
,则添加
;如果存在,则不做任何处理。computeIfPresent()
,同样的顾名思义,该方法的作用是向map中添加键值对
,如果存在
,则添加(即覆盖原来的键值对)
;如果不存在,则不做任何处理。
简单总结:computeIfAbsent()和computeIfPresent()是compute()的加强版,且两者作用刚好相反。
使用示例
public static void main(String[] args) throws InterruptedException {
//01 创建一个map,添加一个元素
Map map = new HashMap<String, String>();
map.put("键", "对应的值");
System.out.println(map); //输出结果 {键=对应的值}
//02 这里的操作等价于 01 的操作 k代表键,v代表值
Map mapCompute = new HashMap<String, String>();
mapCompute.compute("键", (k, v) -> "对应的值");
System.out.println(mapCompute); //输出结果 {键=对应的值}
//03 如果map中不存在等于"键"的k,则添加为"键"的k以及"对应的值"
Map mapComputeIfAbsent = new HashMap<String, String>();
Object o = mapComputeIfAbsent.get("键");
if (o == null) {
mapComputeIfAbsent.put("键", "对应的值");
} else {
System.out.println("什么也不做");
}
System.out.println(mapComputeIfAbsent); //输出结果 {键=对应的值}
//04 这里的操作等价于 03 的操作, v代表值
mapComputeIfAbsent.computeIfAbsent("键", v -> "对应的值");
System.out.println(mapComputeIfAbsent); //输出结果 {键=对应的值}
//map.computeIfPresent()和上面同理,我就不再做演示啦~
}
相关文章
- org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.util.HashMap
- Java基础__ToString()方法
- Java IO--File类
- Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
- Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
- Java实现 LeetCode 240 搜索二维矩阵 II
- java实现排列序数
- [JavaME]利用java.util.TimerTask来做Splash Screen的N种方法
- Java中List与Map初始化的一些写法
- java 11 ZGC(可伸缩,低延迟的gc)
- ArcGIS Server 10 for java 注册SOE出现的问题
- 一个使用Java Map.computeIfAbsents实现非波拉契(fibonacci)数列的列子
- 使用Java消费API的一个错误消息PKIX path building failed以及解决方案
- Java Web技术经验总结(四)
- java 读取excel(Map结构)xls
- 【Java合并图片】使用Java实现两张图片合并成一张图片的功能(水平合并、垂直合并、透明背景颜色)
- java导出word模板
- Java 文档注释
- Java中Map的使用
- java的Map浅析
- 【Java】一篇文章带你了解Collection接口、List集合、Set集合、Map集合
- Java Stream 处理分组后取每组最大&Stream流之list转map、分组取每组第一条&Java 8 Collectors:reducing 示例(List分组取最值)
- Java实现Map集合二级联动