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的使用相关推荐

  1. Java基础知识之Map:compute, computeIfAbsent, computeIfPresent

    Java基础知识之Map:compute, computeIfAbsent, computeIfPresent 功能 default V compute(K key, BiFunction<? ...

  2. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  3. java集合——映射表+专用集合映射表类

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--映射表+专用集合映射表类 的相关知识: 0.2) for full sour ...

  4. java 不同类型 映射_如何使用Java泛型映射不同的值类型

    java 不同类型 映射 有时,一般的开发人员会遇到这样的情况,即他必须在特定容器内映射任意类型的值. 但是,Java集合API仅提供与容器相关的参数化. 例如,这将HashMap的类型安全使用限制为 ...

  5. 如何使用Java泛型映射不同的值类型

    有时,一般的开发人员会遇到这样的情况,即他必须在特定容器内映射任意类型的值. 但是,Java集合API仅提供与容器相关的参数化. 例如,这将HashMap的类型安全使用限制为单个值类型. 但是,如果您 ...

  6. java mapping_05.Java属性映射的正确姿势

    1. 前言 前一节讲到项目为了更容易维护,易于拓展等原因会使用各种分层领域模型.在多层应用中,常需要对各种不同的分层对象进行转换,这就会存在一个非常棘手的问题即:编写不同的模型之间相互转换的代码非常麻 ...

  7. merge java方法_Java HashMap merge() 方法

    merge() 方法会先判断指定的 key 是否存在,如果不存在,则添加键值对到 hashMap 中. 语法 merge() 方法的语法为: hashmap.merge(key, value, rem ...

  8. 推荐一款 Java 对象映射神器

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 前言 按照日常开发习惯,对于不同领域层使用不同JavaBe ...

  9. 推荐一个 Java 实体映射工具 MapStruct

    声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 在一个成熟的工程中,尤其是现在的分布式系统中,应用与应 ...

最新文章

  1. HTTP头部信息解释分析(详细整理)
  2. 基于现代神经网络通用人工智能架构设计
  3. 5G 信令流程 — ULCL 插入流程
  4. FreeBSD 安装过程
  5. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题
  6. 【CodeForces - 270C】Magical Boxes (思维,进制,有坑)
  7. 2019年关于VM和Kubernetes的思考 | 技术头条
  8. youleb多风格响应式博客wordpress主题模板
  9. [bzoj2819]Nim
  10. PHP里面用ichartjs,ichartjs插件的使用
  11. admob 服务器验证_Admob广告植入过程中遇到的错误汇总
  12. 太励志!考研哈工大高数39分,但逆袭成为院士,做出诺奖级发现
  13. CSDN怎么下载文件
  14. Kafka CPU使用率高排查思路及解决方案
  15. MP3mini播放模块arduino<DFRobotDFPlayerMini.h>函数详解
  16. IOS appstore 发布
  17. 让我们来认识一下信号与系统的关系
  18. 如何实现线上收款 到不同账户支付宝账户
  19. [原创]Xilinx工具关联UEStudio
  20. 检验下载文件完整性、真实性——SHA256校验值

热门文章

  1. MIRO/MIR7有何差别
  2. MRP区域“MRP Area”的定义以及作用
  3. 如何确定固定资产入账价值
  4. 简介 NetWeaver Application Server 的三层架构
  5. check上传模板中的金额字段中的千分位
  6. 这些你耳熟能详的“外国名牌”,其实都是中国的
  7. java 注解 权限_java 使用注解 处理权限(springboot)
  8. java内部类的定义_java定义内部类
  9. c语言对浮点数的处理默认是double吗,C语言中浮点数float和double输出的问题
  10. linux内核链表使用例,Linux设备驱动工程师之路——内核链表的使用