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

【从零开始学Java | 第二十六篇】双列集合(Map)

目录前言一、双列集合的特点1. 键值对Key-Value存储2. 键Key的唯一性3. 值Value的可重复性4. 单向的映射关系5. 顺序的差异化根据具体实现类而定二、双列集合Map常用的APIput(K key, V value)三、Map的遍历方式1.键找值遍历2.键值对遍历3.Lambda表达式前言在之前学习了单列集合Collection接口现在我们要学习的是Map双列集合我们常说的双列集合通常指的是基于Map接口实现的数据结构。与单列集合如List、Set每次只存入一个独立元素不同双列集合每次存储的都是一对具有关联关系的数据。一、双列集合的特点1. 键值对Key-Value存储这是双列集合最本质的特征。集合中的每一个元素实际上是一个Entry条目它包含两个部分Key键数据的唯一标识类似于数据库中的主键、学生的学号或字典里的单词。Value值与键相关联的具体数据类似于学生的具体档案或字典里单词的解释。2. 键Key的唯一性在一个双列集合中绝对不允许存在两个完全相同的 Key。如果你尝试向集合中添加一个已经存在的 Key系统不会报错而是会用新的 Value 覆盖掉旧的 Value。举例如果你先存入了001, 张三随后又存入001, 李四那么键001对应的值就会被更新为李四。3. 值Value的可重复性虽然 Key 必须唯一但不同的 Key 可以映射到完全相同的 Value。举例001, 北京和002, 北京可以和谐地共存于同一个集合中两个不同工号的员工都在北京分公司。4. 单向的映射关系每个 Key最多只能映射到一个确定的 Value你通过 Key 可以极快地查找到对应的 Value但通常不能直接通过 Value 反向高效地查找 Key。如果你需要一个 Key 对应多个数据通常需要将 Value 设置为一个单列集合例如MapString, ListString。5. 顺序的差异化根据具体实现类而定双列集合本身不保证元素的顺序具体是否有序取决于你使用的底层实现类无序集合如最常用的HashMap它存取元素的顺序是不一致的但它的查找和插入效率最高。插入有序如LinkedHashMap它可以保证你遍历集合时元素会按照你当初存入的顺序输出。大小有序如TreeMap它会根据 Key 的自然顺序或者你指定的比较器对所有的键值对进行自动排序。二、双列集合Map常用的API方法名说明V put(K key, V value)添加元素V remove(Object key)根据键删除键值对元素void clear()移除所有键值对元素boolean containsKey(Object key)判断集合是否包含指定的键boolean containsValue(Object value)判断集合是否包含指定的值boolean isEmpty()判断集合是否为空int size()集合的长度也就是集合中键值对的个数put(K key, V value)put方法的细节添加/覆盖在添加数据的时候如果键不存在那么直接把键值对对象添加到map集合中方法返回null如果键已经存在那么会把原有的键值对对象覆盖会把覆盖的值进行返回。public class Test { public static void main(String[] args) { MapString, Integer m new HashMap(); Integer value1 m.put(张三, 18); System.out.println(value1); m.put(李四, 20); m.put(王五, 22); Integer value2 m.put(王五, 25); System.out.println(value2); System.out.println(m); } }三、Map的遍历方式Map有三种遍历方式键找值键值对Lambda表达式1.键找值遍历主要是通过get(K key)方法通过键获取对应的值。public class Test { public static void main(String[] args) { MapString, Integer m new HashMap(); m.put(张三, 18); m.put(李四, 20); m.put(王五, 22); //将map中的键放入单列集合中 SetString s m.keySet(); //通过单列集合中的键找值 s.forEach(key- { Integer value m.get(key); System.out.println(key value); }); } }2.键值对遍历核心思路是通过获取Map集合中的entry来间接获取键和值。public class Test { public static void main(String[] args) { MapString, Integer m new HashMap(); m.put(zhangsan, 13); m.put(lisi, 24); m.put(wangwu, 35); //通过键值对遍历 SetMap.EntryString, Integer entries m.entrySet(); for (Map.EntryString, Integer entry : entries) { String key entry.getKey(); int value entry.getValue(); System.out.println(key value); } } }3.Lambda表达式public class Test { public static void main(String[] args) { MapString, String m new HashMap(); m.put(2026001, 张三); m.put(2026002, 李四); m.put(2026003, 王五); m.forEach(new BiConsumerString, String() { Override public void accept(String key, String value) { System.out.println(key value); } }); } }

相关文章:

【从零开始学Java | 第二十六篇】双列集合(Map)

目录 前言 一、双列集合的特点 1. 键值对(Key-Value)存储 2. 键(Key)的唯一性 3. 值(Value)的可重复性 4. 单向的映射关系 5. 顺序的差异化(根据具体实现类而定) 二、双列集…...

手机摄影新玩法:不用HDR也能拍出好照片?Exposure Fusion技术解析

手机摄影新玩法:不用HDR也能拍出好照片?Exposure Fusion技术解析 每次看到朋友圈里那些明暗细节丰富、色彩饱满的照片,你是不是也好奇它们是怎么拍出来的?大多数人第一反应可能是"HDR模式",但今天我要告诉你…...

从零设计一个AXI Master:手把手教你为Xilinx MIG DDR4控制器编写自定义测试逻辑

从零设计AXI Master:构建Xilinx DDR4控制器的定制化测试引擎 在FPGA开发领域,高效访问DDR4内存是提升系统性能的关键。本文将带您深入AXI总线协议的核心,通过Verilog/SystemVerilog实现一个功能完备的AXI Master模块,突破现成IP核…...

别再乱写音视频了!FFmpeg的av_interleaved_write_frame到底怎么用才不卡顿?

深入解析FFmpeg中av_interleaved_write_frame的高效使用技巧 音视频开发中,最令人头疼的问题莫过于音画不同步和卡顿。我曾在一个直播推流项目中,连续三天被这个问题折磨得焦头烂额——画面流畅但声音总是延迟半秒出现,用户体验极差。最终发…...

ComfyUI实战:LivePortrait对口型技术深度解析,打造动态人像新体验

1. LivePortrait对口型技术:让静态人像活起来的黑科技 第一次看到LivePortrait生成的效果时,我盯着屏幕愣了三分钟——一张普通的照片竟然能跟着我的语音节奏自然地"说话",连嘴角的微妙颤动都和真人无异。这种魔法般的体验&#x…...

低噪放(LNA)关键参数在5G通信电路设计中的优化策略

1. 5G时代LNA设计的核心挑战 当你用手机刷短视频时,可能不会想到信号要经历一场"马拉松"——从基站出发,穿过建筑、树木、甚至雨雾,最终到达你掌心大小的设备。而这场马拉松的第一棒选手,就是藏在手机射频前端的低噪声…...

Serpent 算法:从保守设计到硬件安全典范的深度剖析

1. Serpent 算法的前世今生 第一次听说 Serpent 算法是在2003年的一次密码学研讨会上。当时一位来自剑桥的工程师正在展示他的FPGA加密模块,提到这个算法时用了"固执的老古董"来形容——32轮加密的设计在当时看来简直匪夷所思。但正是这种"固执&quo…...

VSCode+PlatformIO环境下ESP32驱动1.3寸TFT屏幕:TFT_eSPI与lvgl配置实战

1. 硬件准备与接线指南 第一次接触ESP32和TFT屏幕时,最让我头疼的就是接线问题。我用的是一块1.3寸240240分辨率的SPI接口TFT屏幕,这种七针屏幕在淘宝上很常见,价格也很亲民。屏幕背面通常会标注引脚定义,如果没有的话可以找卖家要…...

JavaScript金融计算中的精度陷阱与decimal.js实战指南

1. 为什么金融计算需要decimal.js? 如果你在JavaScript中执行过0.1 0.2这样的计算,可能会惊讶地发现结果不是0.3,而是0.30000000000000004。这种精度问题在金融系统中简直是灾难——想象一下银行系统因为这种误差少算了一分钱,或…...

为什么频繁收到短信提醒?是因为温湿度出现异常波动设备及时提醒的?

​ 在现代生活和工作环境中,温湿度的稳定性对样本保存起着至关重要的作用,随着智慧物联网的持续发展,越来越多的医院以及实验室安装温湿度监控设备,以确保温湿度处于合适范围。通过安装采集器持续监测冰箱内部环境,…...

光流估计在自动驾驶中的5大应用场景:从车道线检测到碰撞预警

光流估计在自动驾驶中的5大应用场景:从车道线检测到碰撞预警 当一辆自动驾驶汽车以60公里/小时的速度行驶时,每秒需要处理超过100万像素的运动信息。传统基于静态图像的分析方法在这种动态场景中显得力不从心,而光流技术通过捕捉像素级的运动…...

CANoe诊断实战:从Console到Fault Memory的故障排查全流程

1. 当车辆故障灯突然亮起时,工程师如何用CANoe快速定位问题 那天我正在测试车间调试一台新车型的ECU,仪表盘上那个刺眼的黄色故障灯突然亮了起来。作为从业多年的汽车电子工程师,我立刻意识到这可能是偶发性故障——最让人头疼的问题类型。不…...

.NET AgentFramework实战:构建高可用多智能体工作流与微服务集成

1. 为什么需要多智能体工作流? 在现代化企业级应用中,业务逻辑往往涉及多个服务的协同处理。想象一下电商系统中的订单处理流程:需要同时调用库存服务、支付服务、物流服务和风控系统。传统做法是编写硬编码的调用链,但这种紧耦合…...

智能风扇调节:打造安静高效的系统散热优化方案

智能风扇调节:打造安静高效的系统散热优化方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

3步掌握NormalMap-Online:免费在浏览器中生成专业法线贴图

3步掌握NormalMap-Online:免费在浏览器中生成专业法线贴图 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 还在为3D模型缺乏表面细节而烦恼吗?NormalMap-Online让…...

嵌入式工程师面试通关指南:从基础理论到实战调试的30个核心考点

1. 嵌入式系统基础概念 1.1 单片机与微处理器的本质区别 很多刚入门的工程师容易混淆单片机和微处理器的概念。简单来说,单片机就是"片上系统",它把CPU、存储器、I/O接口等核心部件都集成在了一个芯片里。我在设计智能家居控制器时就深有体会…...

Kali虚拟机内存扩展实战:从Gparted操作到swap分区配置

1. Kali虚拟机内存扩展的必要性 很多刚开始玩Kali Linux虚拟机的朋友都会遇到一个头疼的问题——磁盘空间不够用。特别是当你在做渗透测试或者运行一些资源密集型工具时,系统突然提示"磁盘空间不足",那种感觉就像开车时油箱突然见底一样让人焦…...

基于深度学习的肾结石检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Django+web+训练代码+数据集)

视频演示 基于深度学习的肾结石检测系统演示目录 视频演示 1. 前言​ 2. 项目演示 2.1 用户登录界面 2.2 主界面布局 2.3 个人信息管理 2.4 多模态检测展示 2.5 检测结果保存 2.6 多模型切换 2.7 识别历史浏览 2.8 管理员管理用户信息 2.9 管理员管理识别历史 3.模…...

基于Python的充电桩时空供需动态解析:以深圳峰谷电价与节假日效应为例

1. 充电桩供需动态分析的技术背景 电动汽车充电桩的供需关系分析是城市智慧交通建设中的重要课题。作为一名长期从事数据分析工作的技术人,我发现在实际项目中,单纯统计充电桩数量远远不够,关键在于理解时空维度上的供需变化规律。深圳作为国…...

2026年APP兼容性测试平台选型指南:精准破局兼容性难题困扰

随着移动互联网的飞速发展,APP的种类和数量呈爆炸式增长。然而,不同手机品牌、型号以及操作系统版本的差异,让APP在兼容性方面面临巨大挑战。许多开发者都遇到过这样的困扰:APP在某些手机上闪退、界面显示错乱,或是功能…...

imx6ull静态IP配置与MobaXterm远程登录实战指南

1. imx6ull开发板静态IP配置全流程 第一次接触imx6ull开发板时,最让人头疼的就是每次重启后IP地址都会变化。想象一下,你刚调试好的远程连接,重启设备后就找不到了,这种体验实在太糟糕了。今天我就来分享一个彻底解决这个问题的方…...

Hyperf方案 Kubernetes部署

<?php /*** 案例标题&#xff1a;Kubernetes部署* 说明&#xff1a;K8s deployment/service/configmap yaml配置&#xff0c;含滚动更新、资源限制、健康探针* 需要安装的包&#xff1a;无需PHP包&#xff0c;这是K8s YAML配置文件*/// k8s/namespace.yaml /* apiVersion…...

Galaxy新手必看:5分钟搞定生物信息学工作流搭建(附Circos图实战)

Galaxy新手必看&#xff1a;5分钟搞定生物信息学工作流搭建&#xff08;附Circos图实战&#xff09; 第一次接触生物信息学分析时&#xff0c;面对命令行和复杂的数据格式&#xff0c;很多初学者都会感到无从下手。Galaxy平台的出现彻底改变了这一局面——这个开源的Web工具让生…...

别再用默认源了!Ubuntu22.04换源后软件下载速度提升10倍的秘密

别再用默认源了&#xff01;Ubuntu22.04换源后软件下载速度提升10倍的秘密 当你在Ubuntu终端里输入apt update后盯着缓慢爬升的进度条发呆时&#xff0c;有没有想过这背后隐藏着一个影响开发效率的关键因素&#xff1f;作为长期使用Ubuntu的开发老鸟&#xff0c;我发现90%的用户…...

技术文章大纲:用Anaconda驯服AI开发流

技术文章大纲&#xff1a;用Anaconda驯服AI开发流引言简述AI开发的复杂性与环境管理的重要性介绍Anaconda作为Python数据科学和AI开发的集成工具优势Anaconda的核心功能与AI开发适配性虚拟环境管理&#xff1a;隔离不同项目依赖Conda包管理&#xff1a;简化复杂库&#xff08;如…...

claw-code 源码分析:从「清单」到「运行时」——Harness 为什么必须先做 inventory 再做 I/O?

说明&#xff1a;本文分析对象为开源仓库 claw-code&#xff08;README 中 Rewriting Project Claw Code 的 Python/Rust 移植工作区&#xff09;。1. 问题在问什么 Inventory&#xff08;清单&#xff09;&#xff1a;在 Harness 里&#xff0c;指「系统承认存在的命令名、工具…...

Windows HEIC缩略图扩展:让苹果照片在PC上清晰呈现

Windows HEIC缩略图扩展&#xff1a;让苹果照片在PC上清晰呈现 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 问题场景&#xf…...

5步打造专业虚拟摄像头:OBS插件从部署到精通

5步打造专业虚拟摄像头&#xff1a;OBS插件从部署到精通 【免费下载链接】obs-virtual-cam obs-studio plugin to simulate a directshow webcam 项目地址: https://gitcode.com/gh_mirrors/ob/obs-virtual-cam OBS虚拟摄像头插件是一款能够将OBS Studio的专业直播画面转…...

复旦微FM33单片机GPIO的“高级”玩法:用FL库实现软件PWM、按键扫描和LED流水灯

复旦微FM33单片机GPIO的“高级”玩法&#xff1a;用FL库实现软件PWM、按键扫描和LED流水灯 在嵌入式开发中&#xff0c;GPIO&#xff08;通用输入输出&#xff09;是最基础也是最常用的外设之一。对于复旦微FM33系列单片机来说&#xff0c;除了基本的电平控制&#xff0c;通过巧…...

WarcraftHelper:突破经典游戏限制的焕新体验工具

WarcraftHelper&#xff1a;突破经典游戏限制的焕新体验工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 当你在4K显示器上启动《魔兽争霸III》时&…...