繁体   English   中英

Java流“forEach”但不消耗流

[英]Java stream “forEach” but not consuming stream

有时,在处理流的步骤之间对流中的每个元素进行“某事”(例如打印)将是方便的,例如用于调试。

一个简单的例子可能看起来像这样,不幸的是,这不起作用,因为forEach消耗了流:

List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");

List<String> filteredList = 
        list.stream()
        .filter(s -> s.startsWith("t"))
        .forEach(System.out::println)
        .collect(Collectors.toList());

怎么能实现这一目标?

你正在寻找peek行动:

此方法主要用于支持调试,您希望在元素流经管道中的某个点时查看这些元素

此方法将在Stream管道消耗时对Stream管道的所有元素执行给定操作。 因此,它允许窥视元素。

List<String> filteredList = 
    list.stream()
        .filter(s -> s.startsWith("t"))
        .peek(System.out::println)
        .collect(Collectors.toList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM