Stream.forEach用于遍历流元素,支持Lambda和方法引用,如names.stream().forEach(System.out::println);可处理各类数据类型并适用于打印、调用服务等场景,但不保证并行流顺序,无法中断循环,需注意线程安全与副作用。

在Java中,Stream.forEach 是一种简洁高效的方式来遍历流中的每个元素。它属于 java.util.stream.Stream 接口,常用于对集合进行函数式风格的操作。
forEach 方法接收一个 Consumer<T> 函数式接口作为参数,表示对每个元素执行的操作。常见写法包括方法引用和Lambda表达式。
假设有一个字符串列表,我们想逐个打印每个元素:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");<br>names.stream().forEach(name -> System.out.println(name));更简洁的写法是直接引用 System.out.println:
立即学习“Java免费学习笔记(深入)”;
names.stream().forEach(System.out::println);
除了字符串,也可以处理整数、对象等类型。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);<br>numbers.stream().forEach(n -> System.out.println("数字: " + n));对于自定义对象,比如用户类:
class User {<br> String name;<br> int age;<br> User(String name, int age) {<br> this.name = name;<br> this.age = age;<br> }<br> @Override<br> public String toString() {<br> return name + "(" + age + ")";<br> }<br>}<br><br>List<User> users = Arrays.asList(<br> new User("Tom", 25),<br> new User("Jerry", 30)<br>);<br>users.stream().forEach(System.out::println);不能保证顺序:如果使用的是并行流(parallelStream),元素的处理顺序是不确定的。若需保持顺序,应使用普通 stream 或确保操作无副作用。
无法修改外部变量:Lambda 中不能修改外部的局部变量,但可以访问 final 或等效于 final 的变量。
不支持 break/continue:与传统 for 循环不同,forEach 不支持中断遍历。如需条件控制,可结合 filter 使用。
以上就是如何在Java中使用Stream.forEach遍历元素的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号