在 Java 的 Stream 中,可以使用多个 filter 方法来编写多个逻辑。

例如,假设有一个 List numbers,需要过滤出所有大于 10 且小于 20 的数字,可以使用以下代码:

List<Integer> result = numbers.stream()
    .filter(n -> n > 10)
    .filter(n -> n < 20)
    .collect(Collectors.toList());

在这个例子中,第一个 filter 方法过滤出大于 10 的数字,第二个 filter 方法在第一个 filter 方法的结果上继续过滤出小于 20 的数字。

注意,多个 filter 方法之间是逻辑与的关系,即必须同时满足多个条件才能被过滤出来。如果需要使用逻辑或的关系,可以使用 Stream 的 flatMap 方法结合 Stream.of 方法来实现。例如,过滤出所有小于 10 或大于 20 的数字,可以使用以下代码:

List<Integer> result = Stream.of(
        numbers.stream().filter(n -> n < 10),
        numbers.stream().filter(n -> n > 20)
    )
    .flatMap(Function.identity())
    .collect(Collectors.toList());

在这个例子中,使用 Stream.of 方法将两个 Stream 合并成一个 Stream,然后使用 flatMap 方法将合并后的 Stream 中的元素展开成一个新的 Stream,最后使用 collect 方法将新的 Stream 中的元素收集到一个 List 中。

Java Stream 过滤:多个条件筛选和逻辑操作

原文地址: https://www.cveoy.top/t/topic/nLqU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录