当前位置: 首页 > news >正文

Map--08--CurrentHashMap 与 Hashtable的异同?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • Map方法computeIfAbsent
    • 1.computeIfAbsent 方法的简介
    • 2.案例
      • computeIfAbsent()


Map方法computeIfAbsent

computeIfAbsent方法是Java 8中引入的一种简化操作Map的方式。

  • 该方法通过自动检查键值对是否存在并生成缺失的值,减少了手动检查和插入的样板代码。它不仅使代码更加简洁和易读,还提高了操作的效率和一致性。

1.computeIfAbsent 方法的简介

  • 在Java编程中,Map接口提供了一个便捷的方法computeIfAbsent,它可以用来从map中获取key对应的value。如果value不存在,就使用提供的Function创建一个新的value,然后存入map中,最后返回这个新创建的value

在这里插入图片描述
在这里插入图片描述

2.案例

  1. 判断map中是否存在,如果存在则添加元素到set中
  2. 如果不存在则新建set添加到hashMap中
    public class TestComputeIfAbsent {static HashMap<String, Set<String>> hashMap = new HashMap<>();public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("zhangSan");hashMap.put("china", set);// 判断map中是否存在,如果存在则添加元素到set中,如果不存在则新建set添加到hashMap中if (hashMap.containsKey("china")) {hashMap.get("china").add("liSi");} else {Set<String> setTmp = new HashSet<>();setTmp.add("liSi");hashMap.put("china", setTmp);}System.out.println(hashMap.toString());}}

computeIfAbsent()

public class Test01 {static HashMap<String, Set<String>> hashMap = new HashMap<>();public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("zhangSan");hashMap.put("china", set);// after JDK1.8hashMap.computeIfAbsent("china", key -> {Set<String> set1 = new HashSet<>();return set1;}).add("liSi");System.out.println(hashMap.toString());}}

在这里插入图片描述

hashMap.computeIfAbsent(“china”, key -> getValues(key)).add(“liSi”);的意思表示key为“China”的建值对是否存在,返回的是value的值。

  1. 如果存在则获取china的值,并操作值的set添加数据“lisi"。
  2. 如果不存在,则调用方法,新创建set结构,将"lisi"添加到set中,再存入到hashMap中。
http://www.lryc.cn/news/440756.html

相关文章:

  • Docker学习笔记(三)存储与卷
  • 硬件工程师笔试面试——滤波器
  • 【SpringBoot3】面向切面 AspectJ AOP 使用详解
  • wav怎么转mp3格式?给你推荐几种音频格式转换方法
  • Redis的AOF持久化、重写机制、RDB持久化、混合持久化
  • Dom4j使用xpath查询xml文
  • 国家专精特新小巨人企业指标解析与扶持领域
  • 进程的属性
  • Git 中的refs
  • 408算法题leetcode--第六天
  • ubuntu64位系统无法运行32位程序的解决办法
  • 深入理解Go语言中的并发封闭与for-select循环模式
  • Java学习Day42:骑龙救!(springMVC)
  • 原型模式详细介绍和代码实现
  • ArcGIS Pro SDK (十三)地图创作 5 图层样式
  • 【Python报错已解决】 Requests.exceptions.ProxyError: HTTPSConnectionPool
  • 现在量化中普遍使用QMT和PTrade?哪家可以同时提供QMT/PTrade?
  • 【计算机网络】UDP 协议详解及其网络编程应用
  • 基于ESP32S3的链接大语言模型对话模块
  • Cpp输出多字符常量警告
  • Maven从入门到精通(二)
  • 【Kubernetes】常见面试题汇总(二十四)
  • 最低成本的游戏串流方案分享 如何自己打造云电脑?
  • python运行时错误:找不到fbgemm.dll
  • 给虚拟机linux系统安装交叉编译工具链
  • Redhat 7,8系(复刻系列) 一键部署Oracle21c-xe rpm
  • Web植物管理系统-下位机部分
  • leetcode169. 多数元素
  • 从大脑图谱/ROI中提取BOLD信号
  • Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ