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

Java 中数组和集合的遍历方式

Java 中数组和集合的遍历方式,特别是 list.iterator(),并对比其他常用方法。

🧩 一、先澄清概念:数组 vs List

类型 示例 说明


数组(Array) String[] arr = new String[3]; 固定长度,底层数据结构
List(集合) List list = new ArrayList<>(); 可变长度,接口,常用 ArrayList、LinkedList
✅ 您说的 list.iterator() 是针对 List 集合 的遍历方式。

🔁 二、List 的 5 种遍历方式

我们以一个 List 为例:

java
List list = Arrays.asList(“apple”, “banana”, “orange”);
✅ 方式 1:使用 Iterator(您问的)

java
Iterator it = list.iterator();
while (it.hasNext()) {
String item = it.next();
System.out.println(item);
}
🔍 特点:
最基础的遍历方式
可以在遍历时安全地 删除元素(用 it.remove())
适用于所有 Collection 类型
❗ 注意:
java
System.out.println(list.iterator().next());
// 这只会打印第一个元素,不是完整遍历!

✅ 方式 2:增强 for 循环(for-each)

java
for (String item : list) {
System.out.println(item);
}
🔍 特点:
简洁、易读
内部其实也是用 Iterator
不能在遍历时删除元素(会抛 ConcurrentModificationException)

✅ 推荐日常使用

✅ 方式 3:普通 for 循环(通过索引)

java
for (int i = 0; i < list.size(); i++) {
String item = list.get(i);
System.out.println(item);
}
🔍 特点:
可以获取索引 i
适合需要知道位置的场景
对 ArrayList 快(随机访问),对 LinkedList 慢(逐个查找)

✅ 方式 4:Lambda 表达式(forEach)

java
list.forEach(item -> System.out.println(item));

或更简洁:

java
list.forEach(System.out::println);
🔍 特点:
Java 8+ 支持
函数式编程风格
代码最简洁

✅ 方式 5:Stream 流式处理

java
list.stream()
.forEach(System.out::println);
🔍 特点:
支持过滤、映射等复杂操作
适合大数据处理
可并行执行(parallelStream())

🔁 三、数组的遍历方式

java
String[] arr = {“apple”, “banana”, “orange”};
✅ 方式 1:普通 for 循环

java
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
✅ 方式 2:增强 for 循环

java
for (String item : arr) {
System.out.println(item);
}
✅ 方式 3:转为 Stream

java
Arrays.stream(arr).forEach(System.out::println);
⚠️ 数组没有 iterator() 方法,但可以通过 Arrays.stream(arr).iterator() 获取。

🆚 四、对比总结

遍历方式 是否可删除 是否有索引 适用类型 推荐度


Iterator ✅ it.remove() ❌ Collection ⭐⭐⭐⭐
增强 for ❌ ❌ Array, Iterable ⭐⭐⭐⭐⭐
普通 for ❌ ✅ Array, List ⭐⭐⭐⭐
forEach() ❌ ❌ Iterable ⭐⭐⭐⭐⭐
Stream ❌ ❌ Collection, Array ⭐⭐⭐⭐⭐

💡 五、Iterator 的核心方法

java
Iterator it = list.iterator();

it.hasNext(); // → true/false,是否还有下一个元素
it.next(); // → 返回下一个元素,并移动指针
it.remove(); // → 删除上一次 next() 返回的元素(可选操作)
📌 经典错误:

java
it.remove(); // ❌ 抛 IllegalStateException
// 必须先 next() 才能 remove
📌 安全删除示例:

java
Iterator it = list.iterator();
while (it.hasNext()) {
String item = it.next();
if (“banana”.equals(item)) {
it.remove(); // ✅ 安全删除
}
}

✅ 六、最佳实践建议

场景 推荐方式


日常遍历打印 for (item : list) 或 list.forEach(System.out::println)
需要索引 普通 for 循环
遍历中删除 Iterator
复杂数据处理 Stream
性能敏感(大量数据) 普通 for(ArrayList)或 Iterator

✅ 七、关于 list.iterator().next()

您之前代码中:

java
System.out.println(list.iterator().next());

这相当于:

java
Iterator it = list.iterator(); // 创建一个新迭代器
it.next(); // 取第一个元素

⚠️ 它只取第一个元素,不是遍历!

如果想遍历,必须用 while (it.hasNext()) 循环。

✅ 总结
list.iterator() 是遍历 List 的一种底层方式,适合需要 安全删除 的场景。
日常开发推荐使用 增强 for 循环 或 forEach。
数组和 List 的遍历方式略有不同,注意区分。
iterator().next() 只取一个元素,不是遍历。

http://www.dtcms.com/a/524305.html

相关文章:

  • 网站建设评估及分析wordpress 视频 批量
  • 自己开发网站需要什么技术青海网站建设与维护
  • sqli-labs第二关
  • 大数据Spark(七十):Transformation转换算子cogroup和zip使用案例
  • Drools在java中的使用
  • 【办公类-121-02】20251024淘宝视频红包(UIBOT点击“左箭头”“视频”“消息”切换)
  • 9 种高级 RAG 技术及其实现方法
  • 计算机网络面试核心知识点大全
  • 做网站建站现在什么传奇最火电脑版
  • C语言需要掌握的基础知识点之图
  • 做一个类似京东的网站海外注册公司
  • python舆情分析可视化系统 情感分析 微博 爬虫 scrapy爬虫技术 朴素贝叶斯分类算法大数据 计算机✅
  • 压缩与缓存调优实战指南:从0到1根治性能瓶颈(六)
  • 做百度手机网站优化点asp网站制作教程
  • element+vue3 table上下左右键切换input和select
  • 元萝卜 1.0.27| 免Root,XP模块框架,支持应用多开分身,一键微信平板模式
  • 长春企业网站seo珠海企业官网设计制作
  • MySQL 函数详细说明
  • 《Memcached 连接:深入理解与优化实践》
  • C++ EigenSolver无优化模式下报错分析
  • 数据结构——折半插入排序
  • io_uring 快吗? Postgres 17 与 18 的基准测试
  • 国产数据库替代MongoDB:政务电子证照新选择
  • 甘孜建设网站集团响应式网站建设
  • 枸杞网站建设方案2024年即将上市的手机
  • Git 版本回退 reset --mixed 命令
  • 博途DWORD中包含word ,字节,位的关系
  • Java Character 类详解
  • 【数据结构】队列“0”基础知识讲解 + 实战演练
  • 【生活】秋冬季节,鼻子很干结痂,扣掉鼻孔干痂流血,鼻塞等护理方法