首页 > 文章列表 > Java 9中Collectors.filtering()方法的重要性是什么?

Java 9中Collectors.filtering()方法的重要性是什么?

123 2023-09-07

Collectors类是StreamAPI的重要组成部分。在 Java 9 中,新方法:filtering() 添加到 Collectors 类中。 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]}