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

在Java中,Stream.forEach 是一种简洁高效的方式来遍历流中的每个元素。它属于 java.util.stream.Stream 接口,常用于对集合进行函数式风格的操作。
基本语法
forEach 方法接收一个 Consumer 函数式接口作为参数,表示对每个元素执行的操作。常见写法包括方法引用和Lambda表达式。
示例:使用 Lambda 表达式
假设有一个字符串列表,我们想逐个打印每个元素:
List names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream().forEach(name -> System.out.println(name));
示例:使用方法引用
更简洁的写法是直接引用 System.out.println:
立即学习“Java免费学习笔记(深入)”;
names.stream().forEach(System.out::println);
遍历其他数据类型
除了字符串,也可以处理整数、对象等类型。
Melodio
Melodio是全球首款个性化AI流媒体音乐平台,能够根据用户场景或心情生成定制化音乐。
110 查看详情
List numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(n -> System.out.println("数字: " + n));
对于自定义对象,比如用户类:
class User {
String name;
int age;
User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + "(" + age + ")";
}
}
List users = Arrays.asList(
new User("Tom", 25),
new User("Jerry", 30)
);
users.stream().forEach(System.out::println);
注意事项
不能保证顺序:如果使用的是并行流(parallelStream),元素的处理顺序是不确定的。若需保持顺序,应使用普通 stream 或确保操作无副作用。
无法修改外部变量:Lambda 中不能修改外部的局部变量,但可以访问 final 或等效于 final 的变量。
不支持 break/continue:与传统 for 循环不同,forEach 不支持中断遍历。如需条件控制,可结合 filter 使用。
建议场景打印日志或调试信息 调用外部服务或保存数据(注意线程安全) 执行无返回值的副作用操作基本上就这些。Stream.forEach 让代码更清晰,适合简单遍历任务。
以上就是如何在Java中使用Stream.forEach遍历元素的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/938082.html
微信扫一扫
支付宝扫一扫