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

进阶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() 方法遍历

        通过 MapkeySet() 方法获取所有的键,然后使用 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 系列集合的遍历方法&#xff08;三种方法&#xff09; 2.1 使用 keySet() 方法遍历 2.2 使用 entrySet() 方法遍历 2.3 使用 forEach() 方法遍历&#xff08;Java 8&#xff09; 1.0 Map 集合的…...

Auth.js:多合一身份验证解决方案 | 开源日报 No.60

nodejs/node Stars: 96.2k License: NOASSERTION Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。它具有以下关键特性和核心优势&#xff1a; 强大&#xff1a;Node.js 提供了强大且高效的服务器端运行能力&#xff0c;可以处理并发请求&#xff0c;并支持异步编程…...

SpringBoot整合Activiti7——任务监听器(七)

文章目录 一、任务监听器事件类型配置方式(选)代码实现xml文件创建监听器class方式expression方式delegateExpression 测试流程部署流程启动流程完成任务 一、任务监听器 任务监听器可以在任务创建、任务分配、任务完成、任务删除发生时触发&#xff0c;从而执行相应的逻辑。 事…...

电解电容寿命与哪些因素有关?

电解电容在各类电源及电子产品中是不可替代的元器件&#xff0c;这些电子产品中由于应用环境的原因&#xff0c;使它成为最脆弱的一环&#xff0c;所以&#xff0c;电解电容的寿命也直接影响了电子产品的使用寿命。 一、电解电容失效模式与因素概述 铝电解电容器正极、负极引出…...

Opencv-图像插值与LUT查找表

图像像素的比较 白色是255&#xff0c;黑色是0 min(InputArray src1,InputArray src2,OutputArray dst) max(InputArray src1,InputArray src2,OutpurArray dstsrc1:第一个图像矩阵&#xff0c;通道数任意src2&#xff1a;第二个图像矩阵&#xff0c;尺寸和通道数以及数据类型…...

我为什么写博客?写博客给我带来了什么?

1、写博客的契机 &#xff08;1&#xff09;刚开始接触CSDN&#xff0c;是大三的时候开始学习嵌入式开发&#xff0c;经常需要到网上百度查资料&#xff0c;由此经常游览CSDN上的博客&#xff1b; &#xff08;2&#xff09;在嵌入式的过程中&#xff0c;需要总结学习过的知识。…...

jdk11的HttpClient

我们都知道在jdk11之前都在用okhttp或者org.apache.httpcomponents 其实早在jdk9的时候这个方案就在孵化中 上面的截图来自openjdk的官网&#xff0c;注&#xff1a;openjdk是个开源项目&#xff0c;不存在侵权现象 这是openjdk的官网&#xff1a;JEP 110: HTTP/2 Client (In…...

Redis的优势

高性能 Redis是一种基于内存的数据存储系统&#xff0c;读写性能非常高&#xff0c;因此适用于对性能要求较高的应用场景。 数据结构丰富 Redis支持多种数据结构&#xff0c;如字符串、列表、集合、散列、有序集合等&#xff0c;可以满足不同的业务需求。还有一些特殊数据结…...

C++ string 类的其他操作

4.3.2 string 类的其他操作 在C新增string类之前,程序员也需要完成诸如给字符串赋值等工作。对于C语言式的字符串,程 序员使用C语言库中的函数来完成这些任务。头文件cstring(以前为string.h)提供了这些函数。例如,可 以使用函数 strcpy()将字符串复制到字符数组中,使用函数…...

structs2 重构成SpringBoot架构

# 目录 structs2 重构成SpringBoot架构 1.1 structs2架构&#xff1a; 1.2 springboot 架构 1.3 演化要点&#xff1a; 1.基于前端的展示层不需要修改 2.HttpServlet 将会有SpringBoot annotation 来处理 3.构建前置的Structs url 转发器&#xff0c;适配 4.ActionSupport将由…...

【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1.粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述&#xff1a; 基本思想&#xff1a; 鸟群在寻找食物时&#xff0c;每只鸟都…...

【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

文章目录 1.WinForm文件结构2. 窗体的常用属性、方法与事件2.1 常用属性&#xff08;可直接在属性中设置&#xff09;2.2 常用方法2.3 常用事件 3.Label、TextBox及Button控件4.RadioButton和CheckBox5.ListBox&#xff08;列表框&#xff09; 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是一个开源存储系统&#xff0c;它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能&#xff0c;每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署&#xff0c;并为云原生应用提供持久存储。 PureFl…...

SqueezeNet 一维,二维网络复现 pytorch 小白易懂版

SqueezeNet 时隔一年我又开始复现神经网络的经典模型&#xff0c;这次主要复的是轻量级网络全家桶&#xff0c;轻量级神经网络旨在使用更小的参数量&#xff0c;无限的接近大模型的准确率&#xff0c;降低处理时间和运算量&#xff0c;这次要复现的是轻量级网络的非常经典的一…...

Java 数据结构

枚举 Java枚举是一种特殊的类&#xff0c;它用于定义有限个特定的值&#xff0c;例如一周的星期或者性别。枚举在Java中被视为数据类型&#xff0c;你可以使用它们来创建枚举类型的变量&#xff0c;然后使用那些枚举值等。 在Java中&#xff0c;声明枚举类型需要使用enum关键字…...

python sqlalchemy(ORM)- 02 表关系

文章目录 表关系ORM表示 1v1ORM表示 1vm 表关系 1:1&#xff0c;表A 中的一条记录&#xff0c;仅对应表B中的一条记录&#xff1b;表B的一条记录&#xff0c;仅对应表A的一条记录。1:m&#xff0c;表A中的一条记录&#xff0c;对应表B中的多条记录&#xff0c;表B中的一条记录…...

Http长连接同一个socket多个请求和响应如何保证一一对应?

HTTP/2引入二进制数据帧和流的概念&#xff0c;其中帧对数据进行顺序标识&#xff0c;如下图所示&#xff0c;这样浏览器收到数据之后&#xff0c;就可以按照序列对数据进行合并&#xff0c;而不会出现合并后数据错乱的情况。同样是因为有了序列&#xff0c;服务器就可以并行的…...

Standford Compiler Course Assignment 2

第二部分的作业是语法分析&#xff0c;通过编写cool.y(这个assignment的任务)&#xff0c;利用bison将其自动生成语法分析LALR(1)的代码。 语法分析&#xff0c;就是将词法分析阶段已经识别好的token&#xff0c;按照语法的规则&#xff0c;构建抽象语法树的过程。 比如以下的…...

基于Java的校园论坛管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...