Java Stream 过滤:多个条件筛选和逻辑操作
在 Java 的 Stream 中,可以使用多个 filter 方法来编写多个逻辑。
例如,假设有一个 List
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 中。
原文地址: https://www.cveoy.top/t/topic/nLqU 著作权归作者所有。请勿转载和采集!