Java 9 中 Collector.filtering() 方法的重要性是什么?
Collectors 类是Stream API的重要组成部分。在 Java 9 中,向Collectors 类添加了一个新方法:filtering()。Collectors.filtering() 方法可用于过滤流中的元素。它类似于流上的filter()方法。filter()方法在对值进行分组之前对其进行处理,而filtering()方法可以在过滤步骤发生之前与Collectors.groupingBy() 方法很好地结合使用,以对值进行分组。
语法
public static <T, A, R> Collector<T, ?, R> filtering(Predicate<? super T> predicate, Collector<? super T, A, R> downstream)
示例
import java.util.stream.*; import java.util.*; public class FilteringMethodTest { public static void main(String args[]) { List<String> list = List.of("x", "yy", "zz", "www"); Map<Integer, List<String>> result = list.stream() .collect(Collectors.groupingBy(String::length, Collectors.filtering(s -> !s.contains("z"), Collectors.toList()))); System.out.println(result); } }
输出
{1=[x], 2=[yy], 3=[www]}
广告