当前位置: 首页 > 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中。

相关文章:

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

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Map方法computeIfAbsent1.computeIfAbsent 方法的简介2.案例computeIfAbsent() Map方法computeIfAbsent computeIfAbsent方法是Java 8中引入的一种简化操作Map的方…...

Docker学习笔记(三)存储与卷

挂载机制介绍 我们都知道&#xff0c;默认下&#xff0c;Docker容器与宿主机是完全隔离的&#xff0c;这种特性使得我们创建与删除容器都变得更方便&#xff0c;不需要再去删除宿主机上容器遗留下来的痕迹。   但是&#xff0c;当我们使用数据库一类需要持久化数据、共享数据…...

硬件工程师笔试面试——滤波器

目录 12、滤波器 12.1 基础 滤波器原理图 滤波器实物图 12.1.1 概念 12.1.2 滤波器的分类 12.1.3 滤波器的工作原理 12.1.4 滤波器的应用 12.1.5 滤波器设计的关键参数 12.2 相关问题 12.2.1 不同类型的滤波器在实际应用中的具体作用是什么? 12.2.2 如何设计一个简…...

【SpringBoot3】面向切面 AspectJ AOP 使用详解

文章目录 一、AspectJ介绍二、简单使用步骤1、引入依赖2、定义一个Aspect3、开启AOP支持 三、AOP 核心概念四、切点&#xff08;Pointcut&#xff09;1. execution2. within3. this & target4. args & args5. within & target & annotation 五、通知&#xff0…...

wav怎么转mp3格式?给你推荐几种音频格式转换方法

wav怎么转mp3格式&#xff1f;将wav文件转换为MP3格式是一个常见的操作&#xff0c;尤其适用于需要节省存储空间或确保文件兼容性的场景。wav文件保存了音频的所有原始数据&#xff0c;这使得它们的文件体积往往非常庞大。相比之下&#xff0c;MP3格式通过有损压缩技术显著减小…...

Redis的AOF持久化、重写机制、RDB持久化、混合持久化

1、AOF持久化 1.1.AOF持久化大致过程 概括&#xff1a;命令追加&#xff08;append&#xff09;、文件写入、文件同步&#xff08;sync&#xff09; Redis 每执行一条写操作命令&#xff0c;就把该命令以追加的方式写入到一个文件里&#xff0c;然后重启 Redis 的时候&#…...

Dom4j使用xpath查询xml文

Dom4j使用xpath查询带有命名空间的xml文件 方式1 忽略命名空间 DocumentFactory factory DocumentFactory.getInstance(); SAXReader reader new SAXReader(factory); Document document reader.read(xmlFilePath); Element rootElement document.getRootElement(); Nod…...

国家专精特新小巨人企业指标解析与扶持领域

一、什么是国家专精特新小巨人 &#xff08;一&#xff09;概念与定义 专精特新“小巨人”企业是指那些在细分市场中具有专业化、精细化、特色化和新颖化特征的中小企业中的佼佼者。这些企业在创新能力强、市场占有率高、掌握关键核心技术以及质量效益方面表现突出&#xff0…...

进程的属性

tips&#xff1a; task_struct就是linux下的PCB 操作系统不相信任何外部用户&#xff0c;而是只提供窗口&#xff0c;不可能直接与用户打交道&#xff0c;而是通过操作系统 tast_struct用来描述所有进程&#xff0c;用来管理 &#xff1b; 和 && 可以同时跑两个命令 进…...

Git 中的refs

在 Git 中&#xff0c;refs 是用来存储 Git 对象&#xff08;如提交、树、标签等&#xff09;的引用。每个 ref 都是一个指针&#xff0c;指向一个特定的 Git 对象。以下是 Git 中几种常见的 refs 及其含义&#xff1a; 1. refs/heads/ 表示&#xff1a;本地分支。 用途&…...

408算法题leetcode--第六天

58. 最后一个单词的长度 58. 最后一个单词的长度思路&#xff1a;反向遍历时间&#xff1a;O(n)&#xff1b;空间&#xff1a;O(1) class Solution { public:int lengthOfLastWord(string s) {int id s.size() - 1;while(s[id] ){--id;}int ret 0;while(id > 0 &&…...

ubuntu64位系统无法运行32位程序的解决办法

在 64 位的 Ubuntu 系统上运行 32 位程序时&#xff0c;如果出现问题&#xff0c;可能是由于缺少 32 位库支持。以下步骤可以帮助你解决这一问题&#xff1a; 1. 启用 32 位架构 首先&#xff0c;确保系统支持 32 位架构。你可以通过以下命令添加 32 位架构支持&#xff1a; …...

深入理解Go语言中的并发封闭与for-select循环模式

在现代编程中,并发已经成为提高程序性能和响应能力的关键手段。然而,在并发环境下,如何安全地访问和操作共享数据却是一大挑战。本文将深入探讨Go语言中的**封闭(confinement)**技术,以及常见的for-select循环模式,帮助您编写更高效、更安全的并发代码。 并发编程中的安…...

Java学习Day42:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的&#xff0c;但是越复杂的项目使用SpringMVC越方便 基于Java实现MVC模型的轻量级web框架 目标&#xff1a; 小案例&#xff1a; 1.导入依赖 spring-context: 提供 Spring 框架的核心功能&#xff0c;如依赖注入、事件发布和其他应用上…...

原型模式详细介绍和代码实现

&#x1f3af; 设计模式专栏&#xff0c;持续更新中&#xff0c; 欢迎订阅&#xff1a;JAVA实现设计模式 &#x1f6e0;️ 希望小伙伴们一键三连&#xff0c;有问题私信都会回复&#xff0c;或者在评论区直接发言 Java实现原型模式 介绍: 原型模式&#xff08;Prototype Patte…...

ArcGIS Pro SDK (十三)地图创作 5 图层样式

ArcGIS Pro SDK (十三)地图创作 5 图层样式 文章目录 ArcGIS Pro SDK (十三)地图创作 5 图层样式1 风格管理1.1 如何按名称获取项目中的样式1.2 如何创建新样式1.3 如何向项目添加样式1.4 如何从项目中删除样式1.5 如何将样式项添加到样式1.6 如何从样式中删除样式项1.7 如…...

【Python报错已解决】 Requests.exceptions.ProxyError: HTTPSConnectionPool

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

现在量化中普遍使用QMT和PTrade?哪家可以同时提供QMT/PTrade?

QMT的特点 全面的功能集成&#xff1a; QMT集成了行情显示、策略研究、交易执行和风控管理于一体&#xff0c;为投资者提供了一站式的量化交易解决方案。 高效的交易执行能力&#xff1a; 通过全内存交易实现低延迟的交易执行&#xff0c;单笔延时小于1ms&#xff0c;确保了交易…...

【计算机网络】UDP 协议详解及其网络编程应用

文章目录 一、引言二、UDP1、UDP的协议格式2、UDP 报文的解包和分用3、UDP面向数据报的特点 三、UDP输入输出四、UDP网络编程 一、引言 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是一种网络通信协议&#xff0c;它属于传输层的协议。是一…...

基于ESP32S3的链接大语言模型对话模块

本实物模块从实物外观、模块组成、API申请及功能说明四部分来介绍这款基于ESP32S3的大语言模型对话模块。 1、实物外观 2、模块介绍 本硬件平台主要由三个模块组成&#xff0c;包括MAX9814录音模块、MAX98357音频功放模块和ESP32S3模块。如下图所示。 MAX9814录音模块&#…...

Pixel Mind Decoder 前端交互设计:基于 JavaScript 的情绪看板开发

Pixel Mind Decoder 前端交互设计&#xff1a;基于 JavaScript 的情绪看板开发 1. 情绪看板的应用场景与价值 在现代数字化产品中&#xff0c;理解用户情绪变得越来越重要。无论是社交媒体监测、客服系统优化&#xff0c;还是心理健康应用开发&#xff0c;能够实时分析并可视…...

PP-DocLayoutV3惊艳案例:印章(seal)+ 页眉图片(header_image)+ 视觉脚注(vision_footnote)联合定位

PP-DocLayoutV3惊艳案例&#xff1a;印章&#xff08;seal&#xff09; 页眉图片&#xff08;header_image&#xff09; 视觉脚注&#xff08;vision_footnote&#xff09;联合定位 1. 引言&#xff1a;当文档布局分析遇到“硬骨头” 想象一下这个场景&#xff1a;你拿到一份…...

PDF-Parser-1.0零售业应用:促销海报信息提取

PDF-Parser-1.0零售业应用&#xff1a;促销海报信息提取 1. 引言 零售行业的促销活动总是让人又爱又恨。爱的是能带来销量增长&#xff0c;恨的是每次活动都要处理海量的促销海报——设计、印刷、分发&#xff0c;最后还要手动录入成千上万的商品信息、价格数据和活动规则。一…...

Z-Image Turbo企业级API:RESTful设计最佳实践

Z-Image Turbo企业级API&#xff1a;RESTful设计最佳实践 为企业级应用打造稳定可靠的图像生成API服务 1. 引言&#xff1a;为什么企业需要专业的API设计 当我们谈论企业级AI应用时&#xff0c;单次演示的成功远远不够。真正的挑战在于如何构建一个能够支撑高并发、保证稳定性…...

新手福音:利用快马一键生成mobaxterm中文界面配置脚本

作为一个经常需要远程连接服务器的用户&#xff0c;MobaXterm一直是我的主力工具之一。但刚开始使用时&#xff0c;全英文的界面确实让我这个新手有点手足无措。最近发现用InsCode(快马)平台可以快速生成配置脚本&#xff0c;简直不要太方便&#xff01; 为什么需要中文界面 对…...

工业软件集成:在SolidWorks中嵌入Qwen3-ASR-0.6B实现语音指令操作

工业软件集成&#xff1a;在SolidWorks中嵌入Qwen3-ASR-0.6B实现语音指令操作 1. 引言 想象一下这个场景&#xff1a;你正在用SolidWorks设计一个复杂的装配体&#xff0c;双手在鼠标和键盘之间来回切换&#xff0c;一会儿旋转视图&#xff0c;一会儿调整尺寸&#xff0c;一会…...

Go Routine 调度器任务执行机制

Go语言凭借其轻量级线程——Goroutine&#xff0c;成为高并发编程的热门选择。而Goroutine的高效执行&#xff0c;离不开Go调度器的精妙设计。本文将深入探讨Go调度器的任务执行机制&#xff0c;揭示其如何实现高效并发。 **Goroutine的轻量特性** Goroutine相比传统线程更加…...

老Mac焕发新生:突破硬件限制的macOS升级全攻略

老Mac焕发新生&#xff1a;突破硬件限制的macOS升级全攻略 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你的Mac提示"无法更新到最新系统"&#xff0c;当常…...

用Multisim/TINA-TI仿真带你玩转一阶到二阶有源滤波器:从传递函数到实际频响曲线全验证

从仿真到实践&#xff1a;一阶与二阶有源滤波器的可视化验证指南 在模拟电路设计中&#xff0c;滤波器是信号处理的基础模块。许多初学者虽然能推导传递函数&#xff0c;却难以将理论公式与实际电路行为建立直观联系。本文将用Multisim和TINA-TI两款主流仿真工具&#xff0c;带…...

IndexTTS 2.0情感控制效果:用自然语言描述生成对应语气语音

IndexTTS 2.0情感控制效果&#xff1a;用自然语言描述生成对应语气语音 1. 引言&#xff1a;语音合成的革命性突破 想象一下这样的场景&#xff1a;你正在制作一部动画短片&#xff0c;主角需要说一句"我受够了&#xff01;"——但你不只是想让它"说出来"…...