HashMap putIfAbsent computeIfAbsent 使用方法

2024-09-02 20:32

本文主要是介绍HashMap putIfAbsent computeIfAbsent 使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方法功能描述:

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 使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Qt之QMessageBox的具体使用

《Qt之QMessageBox的具体使用》本文介绍Qt中QMessageBox类的使用,用于弹出提示、警告、错误等模态对话框,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.简单介绍3.常见函数4.按钮类型(QMessage::StandardButton)5.分步骤实现弹窗6.总结1.引言

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Qt中Qfile类的使用

《Qt中Qfile类的使用》很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件,本文主要介绍了Qt中Qfile类的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录1.引言2.QFile文件操作3.演示示例3.1实验一3.2实验二【演示 QFile 读写二进制文件的过程】4.

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

spring security 超详细使用教程及如何接入springboot、前后端分离

《springsecurity超详细使用教程及如何接入springboot、前后端分离》SpringSecurity是一个强大且可扩展的框架,用于保护Java应用程序,尤其是基于Spring的应用... 目录1、准备工作1.1 引入依赖1.2 用户认证的配置1.3 基本的配置1.4 常用配置2、加密1. 密

Python处理超大规模数据的4大方法详解

《Python处理超大规模数据的4大方法详解》在数据的奇妙世界里,数据量就像滚雪球一样,越变越大,从最初的GB级别的小数据堆,逐渐演变成TB级别的数据大山,所以本文我们就来看看Python处理... 目录1. Mars:数据处理界的 “变形金刚”2. Dask:分布式计算的 “指挥家”3. CuPy:GPU

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

Java中的StringUtils.isBlank()方法解读

《Java中的StringUtils.isBlank()方法解读》:本文主要介绍Java中的StringUtils.isBlank()方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录所在库及依赖引入方法签名方法功能示例代码代码解释与其他方法的对比总结StringUtils.isBl