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

java零基础入门-Map遍历

一、教学目标

  • 能够使用[键找值]的方式遍历map集合。
  • 能够使用[键值对]的方式遍历map集合。

二、正文

        本期教学内容,我要教大家一个好玩的东西,估计也是很多小伙伴惦记的知识点,如何对map集合进行遍历?这个问题呢?我将会通过两种不同的遍历实现方式分别给大家进行教学演示,具有很好的入门学习价值,请大家好好听。

1、Map集合遍历-键找值方式(效率低)

        说起遍历,map自身带有这么一个方法:keySet()。我们先来简单研究一下,该方法是干啥用的?在学习map集合时,我对这个方法我是没有提及的,不知道优美与小伙伴是自己私下了解过的?如果有,说明你觉悟很高哦,继续保持,而没有私下自己去主动拓展学习的小伙伴,这你们可得好好反思一下了啊,为何大佬与你差距会如此之大?

        好,说起keySet(),它的作用就是获取map集合中的所有键。我说到这里了,你们就应该可以猜到我要如何实现通过该遍历目标了。

我们先来简单演示一下:

    @Testpublic void testMapKeySet() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "射手");map.put("吕布", "战士");map.put("妲己", "法师");System.out.println(map.keySet());}

控制台打印输出结果:

[吕布, 妲己, 黄忠]

         既然通过keySet()方法可以获取到map集合中的所有键,那么我们不妨结合get(),不就达成了遍历的目标啦,你们觉得呢?

键找值方式遍历代码演示如下:

    @Testpublic void testMapKeySet() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "射手");map.put("吕布", "战士");map.put("妲己", "法师");Set<String> keys = map.keySet();System.out.println("map所有的键为:" + keys);//键找值遍历方式for(String key:keys){//通过key获取对应的值String value = map.get(key);System.out.println(key+"所对应的值为:"+value);}}

控制台打印输出结果:

map所有的键为:[吕布, 妲己, 黄忠]
吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

        你们看明白了么?取之于map,用之于map。相对遍历方式也是比较能理解的吧?

2、Map集合遍历-键值对方式

        以上方式我是演示完了,那么对于键值对的遍历方式对map进行遍历,这我还需要讲么?小伙伴么,你们说我还需要讲一讲么,所谓的键值对,就是通过遍历map集合全身,你们可以想象对于单列集合是如何遍历的,举一反三。

        还是看到有的小伙伴对于双列集合不是很了解,“单列直接就是直接list.get(index),那双列,我不会,还得需要你带带我”。问题不大,那我就也简单给大家简单演示一下吧。
方式一:可以结合map提供的entrySet()方法进来遍历。

        这里可能就要给大家科普一下了,entrySet()方法,它的作用就是获取到Map集合中所有的键值对对象的集合(Set集合)。

Set<Map.Entry<K, V>> entrySet();

键值对遍历方式代码演示如下:

    @Testpublic void testMapFor() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "射手");map.put("吕布", "战士");map.put("妲己", "法师");//获取所有的entry对象Set<Map.Entry<String, String>> entrySet = map.entrySet();//键值对方式遍历for (Map.Entry<String, String> entry : entrySet) {//解析entry对象String key = entry.getKey();String value = entry.getValue();System.out.println(key + "所对应的值为:" + value);}}

控制台打印输出结果:

吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

        补充一点,其中遍历entrySet集合所获取到的Entry对象,它是在map中是一一对应关系, entry项将键值对的对应关系封装成了键值对对象,这样在遍历map时,就可以从每个entry对象中获取对应的键与对应的值。

        像这种遍历方式,主要还是对entrySet()方法的一个运用。接下来就是纯原生遍历方式了。我们直接使用Iterator迭代器来进行对map遍历。

方式二:可以结合Iterator迭代器使用。

键值对遍历方式代码演示如下:

    @Testpublic void testMapByIterator() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "射手");map.put("吕布", "战士");map.put("妲己", "法师");//获取所有的entry对象Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();//Iterator迭代器while (iterator.hasNext()) {Map.Entry<String, String> next = iterator.next();System.out.println(next.getKey() + "所对应的值为:" + next.getValue());}}

控制台打印输出结果:

吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

        总而言之,以上提供了三种遍历方式,相对而言,通过map键找值的方式效率是最低的,这我不推荐大家在日常过程中使用哈。

相关文章:

  • 通过xlsx库解析读取excel表格内容
  • 现代化的轻量级Redis桌面客户端Tiny RDM
  • 加速 PyTorch 模型预测常见方法梳理
  • 《系统架构设计师教程(第2版)》第6章-据库设计基础知识-03-关系数据库设计
  • Springboot 使用【过滤器】实现在请求到达 Controller 之前修改请求体参数和在结果返回之前修改响应体
  • 14、Linux-Shell03:echo、printf和test命令
  • CSAPP Malloc lab
  • 【LLMs+小羊驼】23.03.Vicuna: 类似GPT4的开源聊天机器人( 90%* ChatGPT Quality)
  • Python (用户登录、身份归属地查询添加异常处理、绘制多角星、电影信息提取)
  • Git之版本回退
  • 云原生技术实践:Kubernetes集群的部署与运维
  • Unity自带的WebSocket使用说明
  • SQLiteC/C++接口详细介绍之sqlite3类(五)
  • 25.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-利用全新的通信结构传递消息
  • 7. Linux进程环境
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Fabric架构演变之路
  • HTTP 简介
  • JS变量作用域
  • JS学习笔记——闭包
  • Mysql优化
  • ReactNativeweexDeviceOne对比
  • React系列之 Redux 架构模式
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 翻译--Thinking in React
  • 聊一聊前端的监控
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 什么软件可以剪辑音乐?
  • 使用agvtool更改app version/build
  • 首页查询功能的一次实现过程
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 一个JAVA程序员成长之路分享
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 用Python写一份独特的元宵节祝福
  • ​第20课 在Android Native开发中加入新的C++类
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.ajax()
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (12)目标检测_SSD基于pytorch搭建代码
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 5种线程安全集合
  • @Service注解让spring找到你的Service bean
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ Linux ] Linux信号概述 信号的产生
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • [iOS]-网络请求总结
  • [Java算法分析与设计]--线性结构与顺序表(List)的实现应用