方法功能描述:

putIfAbsent (a,b)
如果当前map 里面没有key 为a 的数据, 那么把key 为 a,值为b放到map 里面,方法放回null, 如果之前有key 为a 的数据,那么返回a 对应的value,无视参数b

computeIfAbsent(a, Function f)
如果map 里面没有key 为a 的数据, 那么使用f 计算一个key对应的value 放到集合里面,方法返回值为key a 最终对应的value(如果之前map 里面就有key 为a 的数据,那么直接返回a 对应的value,否则返回使用Function 计算出来的value)

computeIfPresent(a,BiFunction bf)
如果当前map 里面不存在key为a 的数据,那么什么也不做。
反之,如果map 里面存在key 为a 的数据,那么使用bf 函数重新计算value, 赋值为a 对应的 value. 最终返回map 里面key a 对应的value

测试代码:

package com.xinyu.test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.function.Function;public class TestArray37 {public static void main(String[] args) {HashMap<String,Integer> test = new HashMap<>();String aaa = "aaa";test.put(aaa,1);//putIfAbsent 如果当前map 里面没有 那么才把值放到map 里面  返回map 里面key 对应的值  如果之前没有值 返回nulltest.putIfAbsent(aaa,3);System.out.println(test.get(aaa));String ddd = "ddd";System.out.println(test.putIfAbsent(ddd, 20));//getOrDefault 如果没有对应的key 则返回默认值String ccc = "ccc";Integer orDefault = test.getOrDefault(ccc, -1);System.out.println(orDefault);//如果对应的key 没有值  那么计算一个key对应的valuetest.computeIfAbsent(aaa, new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return 100;}});System.out.println(test.get(aaa));String eee = "eee";test.computeIfAbsent(eee, new Function<String, Integer>() {@Overridepublic Integer apply(String s) {//计算key 对应的valuereturn s.length();}});System.out.println(test.get(eee));}
}

控制台输出:

1
null
-1
1
3Process finished with exit code 0

HashMap putIfAbsent computeIfAbsent 使用方法相关推荐

  1. Map集合HashMap TreeMap的输出方法

    Map集合HashMap TreeMap的输出方法     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51934301 ...

  2. hashmap put方法_Java HashMap put()方法与示例

    hashmap put方法 HashMap类的put()方法 (HashMap Class put() method) put() method is available in java.util p ...

  3. hashmap示例_Java HashMap remove()方法与示例

    hashmap示例 HashMap类的remove()方法 (HashMap Class remove() method) remove() method is available in java.u ...

  4. HashMap遍历 (四种方法+7种实现方式)

    HashMap遍历 (四种方法+7种实现方式) HashMap遍历从大的方向来说,可分为一下4类: 1.迭代器(Iterator)方式: 2.foreach方式: 3.lambda表达式(JDK 1. ...

  5. Java基础 HashMap实现原理及方法

    1.什么是HashMap? HashMap通常提起他,我们想到的就是键值对方式存储(key-value型式),可以接收null键值和null值.基于Map接口的非同步实现(也就是线程不安全),并不保证 ...

  6. java entryset_Java HashMap entrySet()方法与示例

    HashMap类entrySet()方法 (HashMap Class entrySet() method) entrySet() method is available in java.util p ...

  7. 遍历HashMap的四种方法

    在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键 ...

  8. hashmap clone_Java HashMap clone()方法与示例

    hashmap clone HashMap类clone()方法 (HashMap Class clone() method) clone() method is available in java.u ...

  9. hashmap冲突的解决方法以及原理分析

    HashMap冲突问题看这个就行了 在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样.当程序试图将多个 k ...

最新文章

  1. Struts2+Hibernate+Spring 整合示例
  2. ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
  3. 高效读取大文件,再也不用担心 OOM 了!
  4. python装饰器的通俗理解_简单理解Python装饰器
  5. git拉取tag代码_10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践...
  6. 序列化(串行化)- 使用BinaryFormatter进行序列化
  7. 程序员被公司开除,隔阵子领导命令回前公司讲解代码,网友直呼:关我嘛事?
  8. java萍方字体_苹方字体合集 - osc_flhsyn6i的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 解决发邮件出现“501 Domain address required: HELO”问题
  10. 深度学习 检测异常_深度学习用于异常检测:全面调查
  11. java断点上传分片保存方案_分片上传与断点续传解决方案
  12. Linux低分辨率下时钟中断调用流程
  13. 内存的工作原理及时序介绍
  14. html5实现在线动态画板,HTML5 canvas实现一个简易画板
  15. DNS与GTM协同工作原理
  16. ASIC设计流程相关
  17. 【2021】IOS证书(.p12)和描述文件(.mobileprovision)申请
  18. 微信缓存dat怎么转图片_PC微信dat如何转图片?方式方法
  19. 【MySQL】记一次MySQL内存利用率高的问题解决
  20. Node.js 入门

热门文章

  1. 鸿蒙系统手机还会出吗,华为最强手机即将到来,可能还有华为鸿蒙系统加入!你期待吗?...
  2. android摄像头方向与屏方向,Android通过ExifInterface判断Camera图片方向的方法
  3. python递归合并排序_python 归并排序的递归法与迭代法(利用队列)实现,以及性能测试...
  4. 控制div的大小自适应_可以漂移的电动轮椅,采用“自适应重心控制系统”,根本不怕翻车...
  5. java整数转二进制字符串_在Java中将int转换为二进制字符串表示形式?
  6. 《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
  7. CentOS Linux最常用命令及快捷键整理
  8. LB 终面 与 智能家电 的浅析
  9. ecshop支付方式含线下自提
  10. 转载sunboy_2050 - Android APK反编译详解(附图)