进阶JAVA篇- Map 系列集合的遍历方法与常用API
目录
1.0 Map 集合的说明
1.1 Map 集合的常用方法
1.2 Map 系列集合的特点
2.0 Map 系列集合的遍历方法(三种方法)
2.1 使用 keySet() 方法遍历
2.2 使用 entrySet() 方法遍历
2.3 使用 forEach() 方法遍历(Java 8+)
1.0 Map 集合的说明
Map 是一种集合类型,用于存储键值对(key-value pairs)。每个键都是唯一的,而值可以重复。Map 可以根据键快速查找对应的值。在 Map 中,键和值可以是任意类型的对象。简单来说,Map 类是一个接口,是一种容器,存放着键值对类型的元素。
1.1 Map 集合的常用方法
以代码的方式来介绍 Map 集合的常用方法:
import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set;public class MapAPI {public static void main(String[] args) {//由于 Map 是一个接口,不能直接 new 一个 Map 类型的对象,//所以需要用到 Map 的实现类 HashMap 来创建对象。Map<String,Integer> map = new HashMap<>();//一行经典代码//1. put(k,v) :实例方法,添加元素map.put("二哈",250);map.put("金毛",750);map.put("拉布拉多",1250);map.put("中华田园犬",1359);System.out.println(map);//输出结果为:{二哈=250, 金毛=750, 中华田园犬=1359, 拉布拉多=1250}//2. size() :实例方法,获取元素大小int s = map.size();System.out.println(s);//输出结果为:4//3. isEmpty() :实例方法,判断集合是否为空,为空返回true,反之boolean b = map.isEmpty();System.out.println(b);//输出结果为:false//4. get(k) :实例方法,根据键获取对应的值int i = map.get("二哈");System.out.println(i);//输出结果为:250//5. remove(k) :实例方法,根据键删除整个元素map.remove("二哈");System.out.println(map);//输出结果为:{金毛=750, 中华田园犬=1359, 拉布拉多=1250}//6. containsKey(k) :实例方法,判断是否包含某个键boolean bk = map.containsKey("二哈");System.out.println(bk);//输出结果为:false//7. containsValue(k) :实例方法,判断是否包含某个值boolean bv = map.containsValue(750);System.out.println(bv);//输出结果为:true//8. keySet() :实例方法,获取全部键的集合,// 需要用 Set 系列集合来接受。Set<String> stringSet = map.keySet();System.out.println(stringSet);//输出结果为:[金毛, 中华田园犬, 拉布拉多]//9. values() :实例方法,获取全部值//需要用 Collection 系列集合来接受Collection<Integer> collection = map.values();System.out.println(collection);//输出结果为:[750, 1359, 1250]//10. putAll(Map m) :将 m 中的内容全部倒入到调用该方法的集合中。Map<String,Integer> map1 = new HashMap<>();map1.put("小黑",19999);map1.put("小白",29999);map.putAll(map1);System.out.println(map);//输出结果为:{小白=29999, 金毛=750, 小黑=19999, 中华田园犬=1359, 拉布拉多=1250}//11. clear() :实例方法,删除整个集合中的元素map.clear();System.out.println(map);//输出结果为:{}} }运行结果如下:
1.2 Map 系列集合的特点
无序:就是不会按照添加的元素输出,随机输出,如以下:
不可重复:指定的是 ”键“ 是不允许重复出现,后来添加的重复的元素会覆盖相同 ”键“ 的元素,但是 ”值“ 是不做要求,可以重复出现,如以下:
无索引:因为 Map 系列集合不支持固定的顺序,存在索引自然是没有意义的。
2.0 Map 系列集合的遍历方法(三种方法)
2.1 使用 keySet() 方法遍历
通过 Map 的 keySet() 方法获取所有的键,然后使用 for-each 循环遍历键,并通过 get() 方法获取对应的值。
通过具体的代码来实现:
public class MapIteration {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("二哈",250);map.put("金毛",1250);map.put("拉布拉多",2250);map.put("中华田园犬",3250);//先取出该集合的全部”键“Set<String> stringSet = map.keySet();//然后用增强 for 方法根据”键“通过 get(k) 来查询”值“for (String k:stringSet) {int v = map.get(k);System.out.println(k+"=="+v);}} }运行结果:
步骤:先取出该集合的全部”键“,再然后用增强 for 方法根据”键“通过 get(k) 方法来查询”值“。
2.2 使用 entrySet() 方法遍历
通过 Map 的 entrySet() 方法获取所有的键值对的 Entry 对象,然后使用 for-each 循环遍历 Entry 对象,。简单来说就是,将集合中的一个键值对看作一个整体,然后就用增强 for 循环来遍历集合,再通过 getKey() 和 getValue() 方法获取键和值。
通过具体的代码来实现:
import java.util.HashMap; import java.util.Map; import java.util.Set;public class MapIteration {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("二哈",250);map.put("金毛",1250);map.put("拉布拉多",2250);map.put("中华田园犬",3250);//通过调用 map 的实例方法 entrySet(),键值对包装成一个整体,//Map.Entry<String,Integer>这代码可以理解为是一个类型,用 Set 系列集合来存储Set<Map.Entry<String,Integer>> entrySet = map.entrySet();for (Map.Entry<String,Integer> entry:entrySet) {String k = entry.getKey();int v = entry.getValue();System.out.println(k+"=="+v);}} }运行结果为:
2.3 使用 forEach() 方法遍历(Java 8+)
通过 Map 的 forEach() 方法,传入一个 BiConsumer 函数接口来遍历键值对。BiConsumer 接口的 accept() 方法接收两个参数,分别是键和值。
需要注意的是,这里的 forEach() 该 Map 的实例方法。
通过具体的代码来实现:
import java.util.Map; import java.util.HashMap;public class MapIteration {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("二哈", 250);map.put("金毛", 1250);map.put("拉布拉多", 2250);map.put("中华田园犬", 3250); /* map.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String k, Integer v) {System.out.println(k+"=="+v);}});*///进一步简化为:map.forEach((k, v) -> System.out.println(k + "==" + v));} }运行结果如下:
补充,其实这种方法本质来说是第二种方法的包装。本质还是使用 entrySet() 方法遍历,源代码如下:
可见,第三种方法是很容易实现对 Map 系列集合的遍历的,就需要一行代码就搞定了,也很容易记住:
map.forEach((k, v) -> System.out.println(k + "==" + v));
本篇先介绍到这里,更多内容点击以下链接: 小扳_-CSDN博客
相关文章:
进阶JAVA篇- Map 系列集合的遍历方法与常用API
目录 1.0 Map 集合的说明 1.1 Map 集合的常用方法 1.2 Map 系列集合的特点 2.0 Map 系列集合的遍历方法(三种方法) 2.1 使用 keySet() 方法遍历 2.2 使用 entrySet() 方法遍历 2.3 使用 forEach() 方法遍历(Java 8) 1.0 Map 集合的…...
Auth.js:多合一身份验证解决方案 | 开源日报 No.60
nodejs/node Stars: 96.2k License: NOASSERTION Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。它具有以下关键特性和核心优势: 强大:Node.js 提供了强大且高效的服务器端运行能力,可以处理并发请求,并支持异步编程…...
SpringBoot整合Activiti7——任务监听器(七)
文章目录 一、任务监听器事件类型配置方式(选)代码实现xml文件创建监听器class方式expression方式delegateExpression 测试流程部署流程启动流程完成任务 一、任务监听器 任务监听器可以在任务创建、任务分配、任务完成、任务删除发生时触发,从而执行相应的逻辑。 事…...
电解电容寿命与哪些因素有关?
电解电容在各类电源及电子产品中是不可替代的元器件,这些电子产品中由于应用环境的原因,使它成为最脆弱的一环,所以,电解电容的寿命也直接影响了电子产品的使用寿命。 一、电解电容失效模式与因素概述 铝电解电容器正极、负极引出…...
Opencv-图像插值与LUT查找表
图像像素的比较 白色是255,黑色是0 min(InputArray src1,InputArray src2,OutputArray dst) max(InputArray src1,InputArray src2,OutpurArray dstsrc1:第一个图像矩阵,通道数任意src2:第二个图像矩阵,尺寸和通道数以及数据类型…...
我为什么写博客?写博客给我带来了什么?
1、写博客的契机 (1)刚开始接触CSDN,是大三的时候开始学习嵌入式开发,经常需要到网上百度查资料,由此经常游览CSDN上的博客; (2)在嵌入式的过程中,需要总结学习过的知识。…...
jdk11的HttpClient
我们都知道在jdk11之前都在用okhttp或者org.apache.httpcomponents 其实早在jdk9的时候这个方案就在孵化中 上面的截图来自openjdk的官网,注:openjdk是个开源项目,不存在侵权现象 这是openjdk的官网:JEP 110: HTTP/2 Client (In…...
Redis的优势
高性能 Redis是一种基于内存的数据存储系统,读写性能非常高,因此适用于对性能要求较高的应用场景。 数据结构丰富 Redis支持多种数据结构,如字符串、列表、集合、散列、有序集合等,可以满足不同的业务需求。还有一些特殊数据结…...
C++ string 类的其他操作
4.3.2 string 类的其他操作 在C新增string类之前,程序员也需要完成诸如给字符串赋值等工作。对于C语言式的字符串,程 序员使用C语言库中的函数来完成这些任务。头文件cstring(以前为string.h)提供了这些函数。例如,可 以使用函数 strcpy()将字符串复制到字符数组中,使用函数…...
structs2 重构成SpringBoot架构
# 目录 structs2 重构成SpringBoot架构 1.1 structs2架构: 1.2 springboot 架构 1.3 演化要点: 1.基于前端的展示层不需要修改 2.HttpServlet 将会有SpringBoot annotation 来处理 3.构建前置的Structs url 转发器,适配 4.ActionSupport将由…...
【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。
操作环境: MATLAB 2022a 1、算法描述 1.粒子群算法(Particle Swarm Optimization,简称PSO)是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述: 基本思想: 鸟群在寻找食物时,每只鸟都…...
【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox
文章目录 1.WinForm文件结构2. 窗体的常用属性、方法与事件2.1 常用属性(可直接在属性中设置)2.2 常用方法2.3 常用事件 3.Label、TextBox及Button控件4.RadioButton和CheckBox5.ListBox(列表框) 1.WinForm文件结构 .sln文件 &am…...
【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar
SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建Tab…...
PureFlash云原生存储部署方法
PureFlash云原生存储 PureFlash是一个开源存储系统,它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能,每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署,并为云原生应用提供持久存储。 PureFl…...
SqueezeNet 一维,二维网络复现 pytorch 小白易懂版
SqueezeNet 时隔一年我又开始复现神经网络的经典模型,这次主要复的是轻量级网络全家桶,轻量级神经网络旨在使用更小的参数量,无限的接近大模型的准确率,降低处理时间和运算量,这次要复现的是轻量级网络的非常经典的一…...
Java 数据结构
枚举 Java枚举是一种特殊的类,它用于定义有限个特定的值,例如一周的星期或者性别。枚举在Java中被视为数据类型,你可以使用它们来创建枚举类型的变量,然后使用那些枚举值等。 在Java中,声明枚举类型需要使用enum关键字…...
python sqlalchemy(ORM)- 02 表关系
文章目录 表关系ORM表示 1v1ORM表示 1vm 表关系 1:1,表A 中的一条记录,仅对应表B中的一条记录;表B的一条记录,仅对应表A的一条记录。1:m,表A中的一条记录,对应表B中的多条记录,表B中的一条记录…...
Http长连接同一个socket多个请求和响应如何保证一一对应?
HTTP/2引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,如下图所示,这样浏览器收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的…...
Standford Compiler Course Assignment 2
第二部分的作业是语法分析,通过编写cool.y(这个assignment的任务),利用bison将其自动生成语法分析LALR(1)的代码。 语法分析,就是将词法分析阶段已经识别好的token,按照语法的规则,构建抽象语法树的过程。 比如以下的…...
基于Java的校园论坛管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...
Amundsen多租户架构:企业级数据隔离的终极解决方案
Amundsen多租户架构:企业级数据隔离的终极解决方案 【免费下载链接】amundsen Amundsen is a metadata driven application for improving the productivity of data analysts, data scientists and engineers when interacting with data. 项目地址: https://git…...
2026届毕业生推荐的十大AI辅助论文平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术写作范畴之内,论文AI工具已然变成提高研究效率的关键辅助法子。当下主流工…...
DSP数字电源方案:C2000系列主控TMS32F28069 Buck-Boost双向变换器(...
DSP数字电源方案 Buck-Boost双向变换器 数字控制方式:C2000系列 主控TMS32F28069 300W,8A,输入10-75V,输出5-75V 双向升降压功率转换器buck-boost结构 提供主板PCB,原理图(AD格式),源代码,无控制板资料。 …...
什么是共轭表达式?解决了什么问题?
什么是共轭表达式?解决了什么问题?为什么导数是 1/x? 导数衡量的是“每增加 1 单位的 xxx,y 能增加多少”...
颠覆式配置革命:OpCore-Simplify让黑苹果爱好者效率提升83%的智能工具
颠覆式配置革命:OpCore-Simplify让黑苹果爱好者效率提升83%的智能工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你在凌晨三点对着…...
基于Dify工作流的多阶段检索与筛选系统
Dify工作流中实现查询优化(QO):将查询复杂度分类法与QOL框架融入工作流 假设用户输入的问题是:“请帮我整理2026年1月1日至今在GitHub上发布的金融商业行业开源项目” 为了整理2026年1月1日至今在GitHub上发布的金融商业行业开源…...
基于信息流的移动智能终端隐私保护关键技术研究(中期检查报告)
一、基本情况论文题目 基于信息流的移动智能终端隐私保护关键技术研究 √ 课题进展情况 本课题按开题报告所预定的内容及进度顺利进行,课题进展情况正常。目前已经在开题文献阅读的基础上,对Android隐私保护与信息流分析技术进行了深入研究,挖掘出了信息流分析技术应用于…...
httpspider全局抓包,直接抓取下载模拟器 手机 平板 电视中的数据(视频 音乐 直播
httpspider可以抓取所有经过电脑的所有http和https数据,比如 抓取安卓模拟器,其他电脑软件,而且还可以直接抓取手机中的流量。先看效果图抓模拟器:抓手机:分享了「httpspider.exe」 链接:https://pan.quark…...
HTML函数开发需要多少瓦电源_整机功耗估算指南【说明】
最准方法是用电力功耗仪实测整机交流输入功率;鲁大师靠查表估算易失真;HTML开发真实耗电来自浏览器、框架、开发服务等;选电源须看12V输出能力和80 PLUS认证。怎么看当前整机真实功耗(不是TDP,是插座上真烧的电&#x…...
开关电源救星:用TVS二极管搞定MOS管击穿问题(以24V推挽电路为例)
开关电源救星:用TVS二极管搞定MOS管击穿问题(以24V推挽电路为例) 在中小功率开关电源设计中,MOS管击穿是工程师最头疼的故障之一。我曾在一个24V推挽式电源项目中,连续烧毁了5个MOS管,直到用示波器捕捉到那…...






