Java实现循环遍历的方式从初级到高级

一、基础遍历方式

1. 普通 for 循环

特点:通过索引逐个访问元素,适用于数组和集合,但修改集合(如删除元素)时需谨慎。
代码示例:

List list = Arrays.asList("A", "B", "C");
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

适用场景:需要索引操作(如随机访问)、简单遍历数组或集合。

2. 增强 for 循环(foreach)

特点:语法简洁,无需索引,但无法直接修改集合(如删除元素)。
代码示例:

for (String item : list) {
    System.out.println(item);
}

底层实现:编译后转化为迭代器遍历,本质调用 iterator()next()
适用场景:快速遍历集合或数组,无需修改数据。

二、进阶遍历方式

1. 迭代器(Iterator)

特点:通过 hasNext()next() 方法遍历,支持安全删除元素(通过 remove())。
代码示例:

Iterator iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (item.equals("B")) {
        iterator.remove();  // 安全删除
    }
}

优势:避免并发修改异常(ConcurrentModificationException)。
适用场景:需要动态修改集合(如删除元素)。

2. ListIterator(双向遍历)

特点:继承自 Iterator,支持向前/向后遍历和修改元素。
代码示例:

ListIterator litr = list.listIterator();
while (litr.hasNext()) {
    String item = litr.next();
    litr.set(item.toUpperCase());  // 修改元素
}

适用场景:需要双向遍历或直接修改元素的集合(如 ArrayList)。

三、函数式编程与流式处理

1. Lambda 表达式 + forEach()

特点:Java 8 引入,通过函数式接口简化遍历,支持链式操作。
代码示例:

list.forEach(item -> System.out.println(item));
// 或简写为
list.forEach(System.out::println);

优势:代码简洁,可扩展为复杂逻辑(如过滤、映射)。
适用场景:函数式风格的集合操作。

2. Stream API

特点:链式操作处理数据流(如过滤、映射、归约),支持并行处理。
代码示例:

list.stream()
   .filter(s -> s.startsWith("A"))
   .forEach(System.out::println);

优势:声明式编程,逻辑清晰,可并行执行。
适用场景:复杂数据处理(如过滤、聚合、转换)。

3. 并行流(Parallel Stream)

特点:利用多核 CPU 加速处理,适用于大数据量场景。
代码示例:

list.parallelStream()
   .map(String::toUpperCase)
   .forEach(System.out::println);

注意事项:需确保操作线程安全,避免副作用。
适用场景:高性能需求的大规模数据处理。

四、总结与选择建议

方式适用场景注意事项
普通 for 循环需要索引或遍历数组删除元素易出错
增强 for 循环快速遍历集合或数组无法修改集合内容
迭代器动态修改集合(如删除元素)避免并发修改异常
Stream API复杂数据处理(过滤、映射、归约)声明式编程,逻辑清晰
并行流大数据量的高性能处理确保线程安全

推荐学习路径:

  • 初学者优先掌握 for 循环和增强 for
  • 中级开发者学习迭代器和 ListIterator
  • 高级场景使用 Stream API 和并行流优化性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DKPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值