Stream流的常用方法forEach和filter
Stream流的常用方法forEach
流模型的操作很丰富,这里介绍一些常用的API。这些方法可以被分成两种:
延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方法均为延迟方法。)
终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似StringBuilder那样的链式调用,终结方法包括count和forEach方法
void forEach(Consumer<? super T> action);
该方法接收一个Consumer接口函数,会将每一个流元素交给函数进行处理。
Consumer接口是一个消费型的函数式接口,可以传递Lambda表达式,消费数据。
简单记:
forEach方法,用来遍历流中的数据;
是一个终结方.法,遍历之后就不能继续调用Stream流中的其他方法。
public static void main(String[] args) { //获取Stream流 Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六"); //使用Stream流中的方法forEach对Stream流中的数据进行遍历 // stream.forEach((String name)->{ // System.out.println(name); // }); //优化Lambda表达式 stream.forEach(name-> System.out.println(name)); }
Stream流的常用方法filter
用于对Stream流中的数据进行过滤,可以通过filter方法将一个流准换成另一个子集流;
Stream<T> filter(Predicate<? super T> predicate);
filter方法的参数Predicate是一个函数式接口,所以可以传递Lambda表达式,对数据进行过滤
Predicate中的抽象方法:
boolean test(T t);
public static void main(String[] args) { //创建一个Stream流 Stream<String> stream = Stream.of("张无忌", "周芷若", "赵敏", "张强", "张三丰"); //对Stream流中的元素进行过滤,只要姓张的 Stream<String> stream1 = stream.filter((String name) -> { return name.startsWith("张"); }); //遍历Stream流 stream1.forEach(name-> System.out.println(name)); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix