stream里面filter foreach 还能再fileter吗

是的,在 Java 的 Stream API 中,你可以在 filter 和 forEach 操作之间再次使用 filter。实际上,你可以根据需要链式调用多个中间操作(如 filter、map 等),但请注意,forEach 是一个终端操作,它会消费流并产生一个非流的结果。一旦调用了 forEach 或其他任何终端操作,流就被消费了,不能再进行更多的操作。

以下是一个示例,展示了如何在流操作中使用多个 filter:
 
 
 
 
 
import java.util.Arrays;
import java.util.List;
 
public class StreamExample {
    public static void main(String[] args) {
        List<String> items = Arrays.asList("apple""banana""cherry""date""elderberry");
 
        items.stream()
             .filter(-> s.startsWith("a")) // 第一个 filter,筛选出以 "a" 开头的元素
             .filter(-> s.length() > 4)    // 第二个 filter,筛选出长度大于 4 的元素
             .forEach(System.out::println);  // 终端操作,打印结果
    }
}
 
 
 


posted @ 2024-02-01 09:02  予真  阅读(115)  评论(0编辑  收藏  举报