java putifabsent_java8中Map的一些骚操作总结

2fdcc75eeeb0c8fcc46132fa9f53b255.png

一 前言

本篇内容是关于 map 新特性的一些方法使用上的介绍,如果有不足之处欢迎补充!!

二 map新特性

关于以下函数式编程的函数的计算知识追寻者都使用 简单字符串代替了,参数无非就是Key,value;

2.1 forEach

forEach迭代,相当于for循环

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key1","小熊猫");

hashMap.put("key2","大熊猫");

// 遍历

hashMap.forEach((key,value) -> {

System.out.println("key:"+key + " value: "+value);

});

}

输出

key:key1 value: 小熊猫

key:key2 value: 大熊猫

2.2 computeIfAbsentjava

如果key的值不存在就使用函数结果代替;

值存在示例,任然是使用旧值;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

// 如果key的值不存在就使用 函数值代替

hashMap.computeIfAbsent("key",s-> { return "处处香";});

// {key=无墨生香}

System.out.println(hashMap);

}

值不存在示例,会使用函数值代替为新值;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

// 如果key的值不存在就使用 函数值代替

hashMap.computeIfAbsent("key",s-> { return "处处香";});

// {key=处处香}

System.out.println(hashMap);

}

2.3 computeIfPresent

如果key的值存在就使用函数值代替,如果 函数值为null , 会移除key;

值存在示例,会使用函数值代替旧值

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

// 如果key的值存在就使用函数值代替

hashMap.computeIfPresent("key",(key,value)-> { return "处处香";});

// {key4=处处香}

System.out.println(hashMap);

}

值不存在示例,为空

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

// 如果key的值存在就使用函数值代替

hashMap.computeIfPresent("key",(key,value)-> { return "处处香";});

// {}

System.out.println(hashMap);

}

如果 函数值为null , 会移除key;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

// 如果key的值存在就使用函数值代替

hashMap.computeIfPresent("key",(key,value)-> { return null;});

// {}

System.out.println(hashMap);

}

2.4 putIfAbsent

当key的值存在时不替换值;当key的值不存在时替换key的值;

当key存在示例,还是旧值;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

hashMap.putIfAbsent("key","处处香");

//{key=无墨生香}

System.out.println(hashMap);

}

当key不存在其实就是put操作;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.putIfAbsent("key","处处香");

//{key=处处香}

System.out.println(hashMap);

}

2.5 getOrDefault

当key的值存在时获取值,否则获取指定的默认值;

key值存在示例

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

//无墨生香

System.out.println(hashMap.getOrDefault("key","处处香"));

}

key值不存在示例

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

//处处香

System.out.println(hashMap.getOrDefault("key","处处香"));

}

2.6 merge

如果key的值不存在会用新的值代替,如果key的值存在会用函数值代替旧值,当函数值为空会移除key;

如果key的值不存在会用新的值(第二参数)代替

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.merge("key","处处香",(key,value) -> { return "点击在看";});

//{key=处处香}

System.out.println(hashMap);

}

如果key的值存在会用函数值代替旧值;新的值(第二参数)不起作用

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

hashMap.merge("key","处处香",(key,value) -> { return "点击在看";});

//{key=点击在看}

System.out.println(hashMap);

}

当函数值为空会移除key;

public static void main(String[] args) {

HashMap hashMap = new HashMap<>();

hashMap.put("key","无墨生香");

hashMap.merge("key","处处香",(key,value) -> { return null;});

//{}

System.out.println(hashMap);

}

总结

到此这篇关于java8中Map的一些骚操作的文章就介绍到这了,更多相关java8中Map操作内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python对操作系统要求_python之--并发编程__操作系统

操作系统1.操作系统的发展史1)手工操作 —— 穿孔卡片1946年第一台计算机诞生--20世纪50年代中期&#xff0c;计算机工作还在采用手工操作方式。此时还没有操作系统的概念。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机&#xff0c;然后启动输入机把程序和数据输…

macd 公式 java_EMA指标和MACD指标的JAVA语言实现

最近做的项目需要实现EMA和MACD&#xff0c;但苦于网上没有具体的实现算法。所以自己尝试着编写了一套。已经和通达信等主流股票分析软件核对过结果&#xff0c;并将其开源放在GitHub上&#xff0c;含Junit 测试用例。GitHub地址&#xff1a;https://github.com/wizardbyron/fi…

java 注解 target_详解JDK 5 Annotation 注解之@Target的用法

前言目前&#xff0c;越来越多的架构设计在使用注解&#xff0c;例如spring3.0、struts2等框架。让我们先来看看注解的定义。如下是一段使用了JDK 5 Annotation Target的代码&#xff1a;Target({ElementType.METHOD})Retention(RetentionPolicy.RUNTIME)InheritedDocumentedpu…

python现在时间减去过去时间等于20分钟怎么写_获取当前时间减去10分钟的话SQL语句怎么写...

展开全部对于每个类型拥有的值范围以及并且指定日期e68a84e8a2ad62616964757a686964616f31333363353834何时间值的有效格式的描述见7.3.6 日期和时间类型。这里是一个使用日期函数的例子。下面的查询选择了所有记录&#xff0c;其date_col的值是在最后30天以内&#xff1a;mysq…

java 并发测试main方法_Java并发测试

要求&#xff1a;模拟200个设备&#xff0c;尽量瞬间并发量达到200。思路第一种&#xff1a;线程池模拟200个线程——wait等待线程数达200——notifyAll唤醒所有线程第二种&#xff1a;线程池模拟200个线程——阻塞线程——达到200条件释放比较两种方案都可以实现瞬时高并发的模…

pajek软件使用方法_使用Jco远程连接SAP软件系统方法

作者&#xff1a;JongWill声明&#xff1a;本文章仅用于SAP软件的应用与学习&#xff0c;不代表SAP公司。(注&#xff1a;文中所示截图来源SAP软件&#xff0c;相应著作权归SAP所有。)SAP公司的ERP系统是一套成熟的套装软件&#xff0c;它是博大精深的&#xff0c;但也不是无所…

linux mysql 安装innodb_在ubuntu Mysql 5.7 安装InnoDB Memcached 插件

在ubuntu Mysql 5.7 安装Memcached 插件参考&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/innodb-memcached-setup.htmlMySQL 5.7 Reference Manual / The InnoDB Storage Engine / InnoDB memcached Plugin15.20 InnoDB memcached Plugin15.20.1 Benefits of the Inn…

python怎么定义正方形函数_python – Matplotlib自定义图例以显示正方形而不是矩形...

这是我尝试将条形图的图例从矩形更改为方形&#xff1a;import matplotlib.patches as patchesrect1 patches.Rectangle((0,0),1,1,facecolor#FF605E)rect2 patches.Rectangle((0,0),1,1,facecolor#64B2DF)plt.legend((rect1, rect2), (2016, 2015))但是当我绘制这个时,我仍然…

java 排列3_java中的三大排序算法

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/pqwGreenhand/article/details/53581577一、冒泡排序已知一组无序数据a[1]、a[2]、……a[n]&#xff…

python 批量查询网页导出结果_python批量查询网页的HTTP状态码

最近业余时间在改版一个网站&#xff0c;改版之前频繁调整了一些栏目的属性&#xff0c;包括栏目的层级&#xff0c;这种最怕就是调整了栏目的从属关系&#xff0c;导致了栏目的URL地址改变&#xff0c;一旦改版就导致整个栏目及其下面的文章页地址变更&#xff0c;成为死链。而…

java 文件夹存在文件_Java判断是否存在文件和文件夹

获取项目绝对路径&#xff1a;this.getClass().getClassLoader().getResource(".").getPath()1、判断文件是否存在&#xff0c;不存在创建文件File filenew File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm");if(!file.exists()){try {file.createNew…

镜像浏览器_害怕win10镜像有第三方软件,直接到微软官网下载,原汁原味

很多时候我们在网上下载的一些win10镜像ISO文件都包含有一些第三方的软件&#xff0c;虽然这都是网站为了盈利而不得不做的&#xff0c;但是辛苦下载安装好的windows系统&#xff0c;如果有乱七八糟的软件心里真的会非常不舒服&#xff0c;甚至以前电脑城的win7所谓正版光碟都是…

post大小限制_作为一个程序员,面试中常问的get和post的区别,你真的知道吗

作为一个程序员无论是搞前端的还是搞后端的&#xff0c;只要问起来GET和POST的区别&#xff0c;都能说出来个一二三四来。你可能自己写过无数个GET和POST请求&#xff0c;或者也看过很多权威网站总结出来的区别&#xff0c;你非常清楚的知道什么时候用GET什么时候用POST.当你在…

java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点?

1、static修饰的变量和方法&#xff0c;在类加载时即被初始化&#xff0c;可直接通过类名.变量名和类型.方法名进行调用。2、static修饰的变量&#xff0c;在类加载时会被分配到数据区的方法区。类的实例可共享方法区中的变量。如果static修饰的变量发生改变&#xff0c;那么所…

安卓手机如何防盗_如何设置安卓手机各版本USB调试模式

关注我们&#xff0c;获得更多资讯在这篇教学中&#xff0c;小蛙会详细向大家讲解USB调试模式的开启及关闭方法&#xff0c;以及其用途。在这个过程中&#xff0c;由于Android 机型众多&#xff0c;所以无办法列举太多。但请相信小蛙&#xff0c;开启USB 调试的操作方法基本上是…

python类的私有属性_Python类的私有属性

在 C 和 Java 中&#xff0c;属性(成员)有访问控制&#xff0c;如 public 表示任意代码可以访问该属性&#xff0c;private 表示仅当前类的代码才可以访问该属性。Python 中没有这个访问控制符&#xff0c;但是可以在属性前面加上 __ 两个下划线来表示该属性不能在类外部访问。…

java boolean if_Java if(boolean)和if(boolean=true)区别解析

这篇文章主要介绍了Java if(boolean)和if(booleantrue)区别解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下我们都知道if(){}条件的括号中放的是布尔值&#xff0c;但是现在有两种情况&#xff0c;都是放布尔…

iphone同步助手_iPhone 与安卓手机之间如何进行资料迁移

​上一期我们介绍了 iPhone 之间和安卓手机之间如何备份和进行资料迁移&#xff0c;很多朋友都留言说想知道 iPhone 与安卓手机之间如何进行资料迁移&#xff0c;看来双十一大家都剁手换了手机啊&#xff0c;嘴上说着不要&#xff0c;到头来还是管不住自己的手。同操作系统的手…

当前记录集不支持更新_不断中招的你还放心升级win10吗?wi10近期更新问题及解决办法...

.专于心 精于形.Win10用户升级5月更新后屏幕出现蓝绿伪影&#xff1a;或跟调节色温软件有关随着五月更新升级范围的扩大&#xff0c;一些问题也是加速展现在微软面前。现在&#xff0c;有不少Windows 10用户反馈称&#xff0c;自己升级至五月更新后&#xff0c;屏幕出现了蓝绿伪…

k8s管理java项目_Kubernetes集群部署项目-部署Java项目(推送镜像

Kubernetes(简称k8s)是谷歌开源的一套容器化集群管理系统&#xff0c;当下已被众多大厂及中小企业采用&#xff0c;容器化技术是目前的大势所趋。本套教程k8s版本升级为最新版1.18.0&#xff0c;内容由浅入深&#xff0c;且更加深化细节&#xff0c;对于Java开发者大大提高友好…