Stream.forEach用于遍历流元素,需通过集合的stream()获取流后调用,支持Lambda和方法引用,适合函数式编程与链式操作,如结合filter使用;与for循环相比更简洁,但并行流不保证顺序,应使用forEachOrdered保持顺序,且Lambda中不能修改外部变量,复杂逻辑仍推荐传统循环。

Java 中的 Stream.forEach 方法用于对流中的每个元素执行给定的操作,是一种简洁、函数式风格的遍历方式。它不属于集合类本身的方法,而是通过集合的 stream() 方法获取流后调用的。
基本用法
使用 forEach 遍历集合的常见方式如下:
Listlist = Arrays.asList("apple", "banana", "orange"); list.stream().forEach(item -> System.out.println(item));
也可以简写为方法引用:
list.stream().forEach(System.out::println);
与普通 for 循环的区别
Stream.forEach 更适合函数式编程,代码更简洁,尤其在需要结合过滤、映射等操作时优势明显。例如:
立即学习“Java免费学习笔记(深入)”;
list.stream()
.filter(s -> s.startsWith("a"))
.forEach(System.out::println);
这段代码只输出以 "a" 开头的元素,逻辑清晰,链式调用方便。
注意事项
- 不保证顺序:如果使用并行流(parallelStream),forEach 执行顺序是不确定的。如需保持顺序,应使用串行流或 forEachOrdered。
- 不能修改外部变量:Lambda 表达式中只能访问外部的 final 或有效 final 变量。
- 不适合复杂逻辑:如果遍历中包含复杂的控制语句(如 break、continue),传统 for 循环更合适。










