java ifpresent_java映射的merge、compute、computeIfAbsent、computeIfPresent的使用
merge、compute、computeIfAbsent、computeIfPresent是java8中的语法。
merge:通过构建BiFunction或则是调用java中的一些函数来操作merge参数中的变量。
compute:通过构建BiFunction或则使用lambda表达式来操作参数中的变量,这里无论key是否存在都会执行后面的方法。
computeIfAbsent,computeIfPresent:前一个是当key不存在是则执性后面的方法,后一个是存在时执行后面的方法。
1 packagejihe;2
3 importjava.util.HashMap;4 importjava.util.Map;5 importjava.util.function.BiFunction;6
7 public classMapMain {8 public static voidmain(String[] args) {9 Map myMap = new HashMap<>();10 String keyA = "A";11 String keyB = "B";12 String keyC = "C";13 String keyD = "D";14 String keyE = "E";15 String keyF = "F";16 String keyG = "G";17 String keyH = "H";18 myMap.put(keyA, "str01A");19 myMap.put(keyB, "str01B");20 myMap.put(keyC, "str01C");21
22 System.out.println("myMap initial content:"+myMap);23
24 myMap.merge(keyA, "merge01", String::concat);25 myMap.merge(keyD, "merge01", String::concat);26 System.out.println("Map merge demo content:"+myMap);27
28 BiFunction biFunc = new BiFunction(){29 @Override30 publicString apply(String t, String u) {31 String result =t;32 if (t == null) {33 result =u;34 }35 else{36 result += "," +u;37 }38 returnresult;39 }40 };41
42 myMap.merge(keyA, "BiFuncMerge01", biFunc);43 myMap.merge(keyE, "BiFuncMerge01", biFunc);44 System.out.println("merge"+myMap);45
46 String msg = "msgCompute";47 myMap.compute(keyB, (k, v) -> (v == null) ?msg : v.concat(msg));48 myMap.compute(keyF, (k, v) -> (v == null) ?msg : v.concat(msg));49 System.out.println("compute"+myMap);50
51 myMap.computeIfAbsent(keyC, k ->genValue(k));52 myMap.computeIfAbsent(keyG, k ->genValue(k));53 System.out.println("computeIfAbsent"+myMap);54
55 myMap.computeIfPresent(keyC, biFunc);56 myMap.computeIfPresent(keyH, biFunc);57 System.out.println("computeIfPresent"+myMap);58 }59
60 staticString genValue(String str) {61 System.out.println("===");62 return str + "2";63 }64
65 }
输出的结果为:
myMap initial content:{A=str01A, B=str01B, C=str01C}
Map merge demo content:{A=str01Amerge01, B=str01B, C=str01C, D=merge01}
merge{A=str01Amerge01,BiFuncMerge01, B=str01B, C=str01C, D=merge01, E=BiFuncMerge01}
compute{A=str01Amerge01,BiFuncMerge01, B=str01BmsgCompute, C=str01C, D=merge01, E=BiFuncMerge01, F=msgCompute}
===
computeIfAbsent{A=str01Amerge01,BiFuncMerge01, B=str01BmsgCompute, C=str01C, D=merge01, E=BiFuncMerge01, F=msgCompute, G=G2}
computeIfPresent{A=str01Amerge01,BiFuncMerge01, B=str01BmsgCompute, C=C,str01C, D=merge01, E=BiFuncMerge01, F=msgCompute, G=G2}
java ifpresent_java映射的merge、compute、computeIfAbsent、computeIfPresent的使用相关推荐
- Java基础知识之Map:compute, computeIfAbsent, computeIfPresent
Java基础知识之Map:compute, computeIfAbsent, computeIfPresent 功能 default V compute(K key, BiFunction<? ...
- java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...
进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...
- java集合——映射表+专用集合映射表类
[0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--映射表+专用集合映射表类 的相关知识: 0.2) for full sour ...
- java 不同类型 映射_如何使用Java泛型映射不同的值类型
java 不同类型 映射 有时,一般的开发人员会遇到这样的情况,即他必须在特定容器内映射任意类型的值. 但是,Java集合API仅提供与容器相关的参数化. 例如,这将HashMap的类型安全使用限制为 ...
- 如何使用Java泛型映射不同的值类型
有时,一般的开发人员会遇到这样的情况,即他必须在特定容器内映射任意类型的值. 但是,Java集合API仅提供与容器相关的参数化. 例如,这将HashMap的类型安全使用限制为单个值类型. 但是,如果您 ...
- java mapping_05.Java属性映射的正确姿势
1. 前言 前一节讲到项目为了更容易维护,易于拓展等原因会使用各种分层领域模型.在多层应用中,常需要对各种不同的分层对象进行转换,这就会存在一个非常棘手的问题即:编写不同的模型之间相互转换的代码非常麻 ...
- merge java方法_Java HashMap merge() 方法
merge() 方法会先判断指定的 key 是否存在,如果不存在,则添加键值对到 hashMap 中. 语法 merge() 方法的语法为: hashmap.merge(key, value, rem ...
- 推荐一款 Java 对象映射神器
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 前言 按照日常开发习惯,对于不同领域层使用不同JavaBe ...
- 推荐一个 Java 实体映射工具 MapStruct
声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 在一个成熟的工程中,尤其是现在的分布式系统中,应用与应 ...
最新文章
- HTTP头部信息解释分析(详细整理)
- 基于现代神经网络通用人工智能架构设计
- 5G 信令流程 — ULCL 插入流程
- FreeBSD 安装过程
- [USACO07FEB]银牛派对Silver Cow Party---最短路模板题
- 【CodeForces - 270C】Magical Boxes (思维,进制,有坑)
- 2019年关于VM和Kubernetes的思考 | 技术头条
- youleb多风格响应式博客wordpress主题模板
- [bzoj2819]Nim
- PHP里面用ichartjs,ichartjs插件的使用
- admob 服务器验证_Admob广告植入过程中遇到的错误汇总
- 太励志!考研哈工大高数39分,但逆袭成为院士,做出诺奖级发现
- CSDN怎么下载文件
- Kafka CPU使用率高排查思路及解决方案
- MP3mini播放模块arduino<DFRobotDFPlayerMini.h>函数详解
- IOS appstore 发布
- 让我们来认识一下信号与系统的关系
- 如何实现线上收款 到不同账户支付宝账户
- [原创]Xilinx工具关联UEStudio
- 检验下载文件完整性、真实性——SHA256校验值
热门文章
- MIRO/MIR7有何差别
- MRP区域“MRP Area”的定义以及作用
- 如何确定固定资产入账价值
- 简介 NetWeaver Application Server 的三层架构
- check上传模板中的金额字段中的千分位
- 这些你耳熟能详的“外国名牌”,其实都是中国的
- java 注解 权限_java 使用注解 处理权限(springboot)
- java内部类的定义_java定义内部类
- c语言对浮点数的处理默认是double吗,C语言中浮点数float和double输出的问题
- linux内核链表使用例,Linux设备驱动工程师之路——内核链表的使用