Java Stream Filter详解

Java Stream Filter详解

Java Stream Filter详解

Java 8引入的Stream API中,filter方法是常用的一种方法,用来对流中的元素进行过滤操作。通过filter方法可以筛选出符合指定条件的元素,从而对数据进行筛选和处理。本文将详细介绍Java Stream中的filter方法的使用方法和示例。

1. filter方法的基本用法

在Java Stream中,filter方法用来对流中的元素进行条件过滤,只留下满足指定条件的元素。filter方法接受一个Predicate函数式接口作为参数,该接口定义了一个用来判断元素是否符合条件的方法。如果Predicate接口中的方法返回true,则该元素会被保留;如果返回false,则该元素将被过滤掉。

下面是filter方法的基本语法:

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

其中,T表示流中的元素的类型,Predicate是一个函数式接口,用来定义过滤条件。

2. 示例代码

接下来通过几个示例代码来演示filter方法的使用。

示例1:过滤出偶数

下面的示例代码演示了如何使用filter方法来过滤出一个整数流中的偶数:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

List<Integer> evenNumbers = numbers.stream()
                                   .filter(num -> num % 2 == 0)
                                   .collect(Collectors.toList());

System.out.println(evenNumbers);
Java

运行结果:

[2, 4, 6, 8, 10]
Java

在这个示例中,我们首先创建了一个包含1到10的整数的列表。然后使用stream方法将该列表转换为一个流,接着使用filter方法过滤出所有的偶数,最后通过collect方法将结果收集到一个新的列表中。

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

下面的示例代码演示了如何使用filter方法来过滤出一个字符串流中长度大于5的字符串:

List<String> strings = Arrays.asList("apple", "banana", "orange", "pear", "grape");

List<String> filteredStrings = strings.stream()
                                      .filter(str -> str.length() > 5)
                                      .collect(Collectors.toList());

System.out.println(filteredStrings);
Java

运行结果:

[banana, orange]
Java

这里,我们首先创建了一个包含几个水果名称的字符串列表。然后使用stream方法将其转换为一个流,接着使用filter方法过滤出所有长度大于5的字符串,最后通过collect方法将结果收集到一个新的列表中。

3. 注意事项

在使用filter方法时,需要注意以下几点:

  • filter方法不会改变原始的流,而是返回一个新的流。
  • filter方法是一个惰性操作,只有在终结操作(如collectforEach等)被调用时才会执行。
  • 可以多次调用filter方法对流进行多次过滤。

4. 总结

本文对Java Stream中的filter方法进行了详细介绍,包括基本用法、示例代码和注意事项。通过学习filter方法的使用,可以方便地对流中的元素进行条件过滤,实现数据的筛选和处理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册