news 2026/4/20 8:14:34

java学习--Map遍历方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java学习--Map遍历方式

一、Java 中 Map 遍历的常用方式

在开始前先说明:Map本身没有迭代器,我们通常通过获取它的键集 (keySet)值集 (values)键值对集 (entrySet)来实现遍历。以下是最常用的 5 种遍历方式,结合代码示例讲解。

1. 方式 1:遍历 keySet(仅获取键)

适合只需要 Map 的键(Key),不需要值(Value)的场景。

import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapTraversal { public static void main(String[] args) { // 初始化一个测试 Map Map<String, Integer> map = new HashMap<>(); map.put("Java", 1); map.put("Python", 2); map.put("C++", 3); // 1. 遍历 keySet(仅获取键) Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println("键:" + key); } } }

输出结果

键:Java 键:Python 键:C++
2. 方式 2:遍历 keySet + get (key)(获取键和值)

通过键获取值,是新手最容易想到的方式,但性能较差(因为每次get(key)都会重新计算哈希),不推荐在大数据量场景使用。

// 2. 遍历 keySet + get(key)(获取键和值) for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("键:" + key + ",值:" + value); }

输出结果

键:Java,值:1 键:Python,值:2 键:C++,值:3
3. 方式 3:遍历 entrySet(推荐,高效获取键值对)

直接遍历entrySet(键值对集合),一次获取键和值,性能最优,是最推荐的方式。

// 3. 遍历 entrySet(高效获取键值对) for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("键:" + key + ",值:" + value); }

输出结果:和方式 2 一致

4. 方式 4:遍历 values(仅获取值)

适合只需要 Map 的值,不需要键的场景。

// 4. 遍历 values(仅获取值) for (Integer value : map.values()) { System.out.println("值:" + value); }

输出结果

值:1 值:2 值:3
5. 方式 5:Lambda 表达式遍历(Java 8+)

Java 8 及以上版本支持,语法简洁,适合快速遍历。

// 5. Lambda 表达式遍历(Java 8+) map.forEach((key, value) -> { System.out.println("键:" + key + ",值:" + value); });

输出结果:和方式 2/3 一致

6. 方式 6:迭代器遍历(支持边遍历边删除)

如果需要在遍历过程中删除元素,推荐使用迭代器(foreach 遍历中删除会抛出ConcurrentModificationException)。

// 6. 迭代器遍历(支持删除元素) import java.util.Iterator; Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, Integer> entry = iterator.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("键:" + key + ",值:" + value); // 示例:删除键为 "Python" 的元素 if ("Python".equals(key)) { iterator.remove(); // 安全删除 } } System.out.println("删除后 Map:" + map); // 输出 {Java=1, C++=3}

二、各遍历方式的对比

遍历方式优点缺点适用场景
keySet仅遍历键,逻辑简单无法直接获取值只需要键的场景
keySet + get(key)能获取键值,新手易理解性能差(多次哈希计算)小数据量、临时遍历
entrySet性能最优,能获取键值语法稍复杂(对比 Lambda)大数据量、需要键值的核心场景
values仅遍历值,逻辑最简单无法获取键只需要值的场景
Lambda 表达式语法简洁,代码量少Java 8+ 才支持,无法边遍历边删Java 8+、无需删除元素的场景
迭代器(Iterator)支持边遍历边删除,线程安全代码稍繁琐需要删除元素的场景

总结

  1. 优先推荐:日常开发中需要获取键值对时,优先使用entrySet(性能最优)或 Lambda 表达式(语法简洁,Java 8+)。
  2. 特殊场景:只需要键用keySet,只需要值用values;需要删除元素用迭代器
  3. 避免使用:尽量不要用keySet + get(key)遍历大数据量的 Map,性能损耗明显。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 23:12:15

黑苹果安装终极指南:从零到完美的完整解决方案

黑苹果安装终极指南&#xff1a;从零到完美的完整解决方案 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 想要在普通PC上体验macOS的魅力&#xff1f;黑…

作者头像 李华
网站建设 2026/4/18 7:39:01

【读书笔记】《演而优则仕》

《演而优则仕》&#xff1a;魏晋名士的表演艺术 我是本书作者。今天向大家介绍《演而优则仕》&#xff0c;这本书是我多年来对魏晋名士现象的思考结晶。核心观点可以用两个字概括&#xff1a;表演。 魏晋名士那些看似荒诞不经的言行&#xff0c;并非单纯的反抗礼教&#xff0c;…

作者头像 李华
网站建设 2026/4/18 16:25:19

哪吒监控终极指南:构建企业级自托管服务器监控体系

哪吒监控终极指南&#xff1a;构建企业级自托管服务器监控体系 【免费下载链接】nezha :trollface: Self-hosted, lightweight server and website monitoring and O&M tool 项目地址: https://gitcode.com/GitHub_Trending/ne/nezha 在当今数字化运维环境中&#x…

作者头像 李华
网站建设 2026/4/19 13:50:24

利用上下文提升答案选择精度的新技术

建立答案选择精度的新标准 一个同时利用局部和全局上下文的模型&#xff0c;在两个基准数据集上将精度分别比当前最优水平提高了6%和11%。 会议&#xff1a;ECIR 2021&#xff0c; EACL 2021 相关出版物&#xff1a; 在Transformer模型中使用局部和全局上下文进行答案句子选择在…

作者头像 李华
网站建设 2026/4/20 2:15:21

百度网盘高速下载终极指南:简单三步实现全速下载

百度网盘高速下载终极指南&#xff1a;简单三步实现全速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗&#xff1f;今天为你介绍一款能…

作者头像 李华
网站建设 2026/4/20 5:44:36

深度测评9个论文写作工具,专科生一键生成论文工具推荐!

深度测评9个论文写作工具&#xff0c;专科生一键生成论文工具推荐&#xff01; AI 工具如何助力论文写作&#xff0c;专科生也能轻松应对 在当今信息化快速发展的时代&#xff0c;论文写作早已不再是本科生或研究生的专属任务&#xff0c;越来越多的专科生也面临着撰写论文的压…

作者头像 李华