Java Stream Filter过滤器

简介

Java 8引入了Stream API,它提供了一种处理集合元素的函数式编程方式。Stream API中的filter方法是一种常用的操作,它可以根据指定的条件过滤出符合要求的元素。本文将介绍Java Stream中的filter方法的使用以及一些常见的用法示例。

Stream Filter方法

Stream接口中的filter方法是用于过滤集合元素的方法。它接受一个Predicate接口的实现作为参数,用于判断元素是否满足条件。filter方法返回一个新的Stream流,其中包含满足条件的元素。

filter方法的定义如下:

Stream<T> filter(Predicate<? super T> predicate)

其中,T是流中元素的类型,predicate是一个用于判断元素是否满足条件的函数接口。

用法示例

下面是一些Java Stream filter方法的用法示例:

示例1:过滤出大于10的元素

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 10, 15, 20);

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

System.out.println(result);  // 输出:[15, 20]

在上面的示例中,我们首先创建了一个包含整数的列表numbers。然后,我们使用stream方法将列表转换为一个流。接下来,我们使用filter方法过滤出大于10的元素。最后,使用collect方法将过滤后的元素收集到一个新的列表中。

示例2:过滤出字符串长度大于5的元素

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");

List<String> result = names.stream()
                           .filter(name -> name.length() > 5)
                           .collect(Collectors.toList());

System.out.println(result);  // 输出:[Charlie]

在这个示例中,我们创建了一个包含字符串的列表names。然后,使用stream方法将列表转换为一个流。接着,通过filter方法过滤出字符串长度大于5的元素。最后,使用collect方法将过滤后的元素收集到一个新的列表中。

示例3:过滤出包含特定字符串的元素

List<String> fruits = Arrays.asList("apple", "banana", "orange", "kiwi", "mango");

String keyword = "an";
List<String> result = fruits.stream()
                            .filter(fruit -> fruit.contains(keyword))
                            .collect(Collectors.toList());

System.out.println(result);  // 输出:[banana, mango]

在这个示例中,我们创建了一个包含水果名称的列表fruits。然后,使用stream方法将列表转换为一个流。通过filter方法,我们过滤出包含特定字符串"an"的水果名称。最后,使用collect方法将过滤后的元素收集到一个新的列表中。

总结

Java Stream的filter方法是一种常用的操作,它可以根据指定的条件过滤出满足要求的元素。通过filter方法,我们可以更加灵活地处理集合中的元素,简化代码的编写。希望本文对你理解Java Stream的filter方法有所帮助。

以上就是关于Java Stream中filter过滤器的科普介绍,希望对你有所帮助!