JAVA中集合的遍历方式梳理

发布时间:2026/10/3 20:00:47

JAVA中集合的遍历方式梳理 思维导图集合遍历 ├── Collection 体系继承 Iterable │ ├── List │ │ ├── 遍历内容元素本身 │ │ └── 遍历语法迭代器 / 增强for / forEach / 普通fori要有索引 │ └── Set │ ├── 遍历内容元素本身 │ └── 遍历语法迭代器 / 增强for / forEach │ └── Map 体系不继承 Iterable独立接口 ├── 遍历内容 │ ├── 键keySet() │ ├── 值values() │ └── 键值对entrySet() └── 遍历语法 ├── 通过 keySet() / values() / entrySet() 拿到 Set 或 Collection 类型的对象 ├── 再用 Collection 的通用语法遍历迭代器 / 增强for / forEach └── Map 自己的 forEach(BiConsumer)一、Collection 体系Collection 包括 List 和 Set它们都继承了Iterable所以可以直接使用迭代器、增强 for、forEachListString list new ArrayList(); list.add(张三); list.add(李四); list.add(王五); ​ SetString set new HashSet(); set.add(张三); set.add(李四); set.add(王五);1.迭代器 IteratorIteratorString it list.iterator(); while (it.hasNext()) { String e it.next(); System.out.println(e); // 张三、李四、王五 }2.增强 for(底层集合走迭代器数组走普通 fori)for (String e : set) { System.out.println(e); // 张三、李四、王五 }3.forEach 方法Java 8​ // 匿名内部类写法 list.forEach(new ConsumerString() { Override public void accept(String e) { System.out.println(e); } }); ​ // Lambda 表达式写法 list.forEach(e - System.out.println(e)); ​ // 方法引用写法 list.forEach(System.out::println); ​来自Iterable.forEach(Consumer)接收1 个参数底层默认走增强 for迭代器ArrayList 等重写为 fori4.普通 fori仅 Listfor (int i 0; i list.size(); i) { String e list.get(i); System.out.println(e); // 张三、李四、王五 }Set 没有索引不能用二、Map 体系Map 没有继承Collection也没有继承Iterable不能直接用iterator()或 增强for 必须先通过三个方法拿到Set或Collection类型的对象遍历内容内容方法返回类型返回的是什么键keySet()SetK一个 Set 类型的对象里面装着所有 key值values()CollectionV一个 Collection 类型的对象里面装着所有 value键值对entrySet()SetMap.EntryK,V一个 Set 类型的对象里面装着所有键值对这三个方法返回的Set或Collection对象不是把数据复制一份打包出来的新集合它们直接基于 Map 内部已有的数据返回的集合对象和原 Map共享底层数据对返回的集合对象做删除原 Map 也会同步变化验证MapString, Integer map new HashMap(); map.put(张三, 20); map.put(李四, 22); map.put(王五, 25); ​ SetString keys map.keySet(); // 拿到一个 Set 对象 keys.remove(张三); // 通过它删除 System.out.println(map); // {李四22, 王五25}原 Map 同步变化如果是复制出来的新集合删掉keys里的张三原 Map 里应该还有张三。结果是原 Map 也没了证明它们共享数据遍历语法MapString, Integer map new HashMap(); map.put(张三, 20); map.put(李四, 22); map.put(王五, 25);先通过上面三个方法拿到Set或Collection对象再用 Collection 的通用语法遍历① 键找值SetString keySet map.keySet();//获取所有键的集合 for (String k : keySet ) { Integer v map.get(k); System.out.println(k v); } // 输出张三20、李四22、王五25map.keySet()返回SetK是 Collection 体系可以用增强 for② 键值对 entrySetSetMap.EntryString, Integer entrySet map.entrySet();//获取所有键值对对象的集合 for (Map.EntryString, Integer entry : entrySet) { String k entry.getKey(); Integer v entry.getValue(); System.out.println(k v); } // 输出张三20、李四22、王五25map.entrySet()返回SetMap.EntryK,V也是 Collection 体系 每个元素是一个键值对对象Map.Entry它本来就存在 Map 内部不是现场打包的新对象③ 只遍历值CollectionInteger values map.values();//获取所有值的集合 for (Integer v : values) { System.out.println(v); // 20、22、25 }map.values()返回CollectionV是 Collection 体系④ 迭代器方式IteratorMap.EntryString, Integer it map.entrySet().iterator(); while (it.hasNext()) { Map.EntryString, Integer entry it.next(); System.out.println(entry.getKey() entry.getValue()); } // 输出张三20、李四22、王五25entrySet()返回的 Set 对象有iterator()所以可以用迭代器⑤ Map 自己的 forEach// 匿名内部类写法 map.forEach(new BiConsumerString, Integer() { Override public void accept(String k, Integer v) { System.out.println(k v); } }); // Lambda 表达式写法 map.forEach((k, v) - System.out.println(k v)); // 输出张三20、李四22、王五25来自Map.forEach(BiConsumer)接收2 个参数
延伸阅读

更多相关文章

2026/10/3 20:00:47

遇到文件夹删除失败的解决方法

win r,输入resmon后回车。在cpu选项卡中搜索要删除的文件夹名称,将搜索到的全部结束进程。然后在删除文件夹就可以了。

2026/10/3 20:55:50

多目标跟踪中的数据关联:从匈牙利算法到YOLO MOT指标解析

1. 数据关联到底在解决什么问题 把马路上十几个人、几十辆车同时盯住,还要保证画面上每个目标框从头到尾都不张冠李戴,这件事看起来只用一句“跟踪嘛”就能带过,真正落地去做,几乎是把多目标跟踪项目做崩的头号因素。跟踪器从检测…

2026/10/3 20:55:50

MySQL IN查询优化:分片、覆盖索引与临时表JOIN的落地实践

做后端这几年,被IN查询“背刺”的次数可不算少。尤其是权限过滤、批量 ID 查询、批量导出这类业务,产品一句话“把选中的 ID 都查出来”,SQL 里就甩进来几百甚至上千个 ID。数据量小的时候,IN用着是真爽;可一旦目标表到…

2026/10/3 20:55:50

基于Python+Spark的智慧城市交通大数据系统全链路解析

简介:以Python与Spark为核心的智慧城市交通大数据系统毕业设计资料包,面向计算机相关专业本科生及需要完成课设、毕设或初期立项演示的开发者。资源完整覆盖数据采集、处理、分析与可视化流程,提供可运行的Python爬虫脚本、Scala与Java处理程…

2026/10/3 20:55:50

高级数据库查询实战:从多表连接到窗口函数的SQL备考指南

备考计算机三级(数据库技术)的同学,十有八九会在交出一套 SELECT 语句后被批错。不是你不会写查询,而是高级数据库查询考的不只是语法,它考的是你对关系模型、分组逻辑和查询优化器的理解。很多人在这一步掉链子&#…

2026/10/3 20:55:50

数字IC后端PPA优化:用Innovus Module Region锁定Timing一致性

说实话,在数字IC后端跑项目的时候,最让工程师抓狂的不是时序收敛不了,而是同样的设计、同样的约束、同样的脚本,昨天跑和今天跑结果却对不上。尤其在做PPA优化阶段,你明明把某个关键路径的setup违例修掉了,…

2026/10/3 20:50:50

SpringBoot多数据源实战:dynamic-datasource集成与避坑指南

做后端开发的兄弟,大概率都遇到过这样的场景:项目刚上线时一套MySQL库跑得挺欢,后来订单量大了,老板说要把报表拆出来,于是又多了一个只读库;再往后,用户服务单独拆了一套库,数据分析…

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/2 18:20:53

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 15:02:19

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 0:04:31

国内大学生必备的AI写作辅助软件是哪款?

国内高校学生在论文写作过程中,越来越依赖AI辅助工具提升效率,主流方案以本土化全流程工具为核心,结合通用大模型与专业插件,覆盖选题构思、框架搭建、初稿撰写、查重降重、格式调整等关键环节,本文将深入解析当前主流…

2026/10/3 0:04:31

Codex接入Jev模型完整指南:配置方法、本地部署与踩坑排查

最近不少人在讨论 Codex 搭配 Jev 这套玩法,我一开始没太当回事,直到自己把 Jev 接进 Codex跑了几轮编码任务之后,才明白那些说“直接起飞”的人是怎么想的。Codex 作为工具本身已经够能打了,但模型固定、上下文策略固定&#xff…

2026/10/3 0:04:31

GitHub 热门: NVIDIA/Model-Optimizer

👋 Hi,我擅长 AI 大模型应用落地、意识解码与 AI 开发工具链 。 💡 创业路上,用技术换时间,一起把 AI 变成生产力 🚀 >GitHub 热门: NVIDIA/Model-Optimizer 凌晨两点,你刚把跑通了的 Qwen3.…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑