Java Stream API Filter「过滤器」

1. Java Stream API简介

Java 8引入的Stream API,为操作集合提供了一种新的抽象方式。它支持对集合进行函数式和声明式操作,从而可以轻松地编写出高效且易于理解的代码。Stream API支持并行操作,即使在处理海量数据时也能保证程序的性能。

Stream API 的一个主要设计目标是将其功能打造得高效且易于使用,并使其适用于多种场景。Stream API 支持多种操作,例如聚集、分组和过滤,其中过滤操作是我们本篇文章要重点介绍的一种。

2. Java Stream API Filter概述

Filter操作是Stream API中的一种操作。它可以根据指定的条件过滤集合中的元素,只保留符合条件的元素。

Stream API 提供了 filter() 方法基于给定的 Boolean条件过滤元素。每一个 Intermediate 操作都会返回一个新的 Stream(译者注:中间操作会返回一个新的流,供下一个操作使用)。 filter() 方法以一个 Predicate 为参数,Predicate是一个函数接口,用于判断并保留符合条件的元素。以下是 filter() 方法的基本语法:

Stream filter(Predicate predicate)

在这里,predicate 是一个接受 T 类型的输入参数,并返回布尔值的Lambda表达式。如果 Lambda 返回 true,则 filter() 方法就会保留该元素。

3. Java Stream API Filter使用方法

3.1 过滤字符串数组中长度大于5的字符串

下面的示例展示了如何使用filter()操作过滤字符串数组中长度大于5的字符串:

String[] strArray = {"Apple", "Banana", "Orange", "Pear", "Grape"};

Stream stream = Arrays.stream(strArray);

stream.filter(str -> str.length() > 5).forEach(str -> System.out.println(str));

输出结果如下:

Banana

Orange

在此示例中,我们使用 stream() 方法将字符串数组转换为一个 Stream。然后使用过滤器 filter() 操作过滤掉所有长度小于或等于 5 的元素,并使用 forEach() 操作输出结果。

3.2 过滤整数数组中的偶数

下面的示例展示了如何使用filter()操作过滤整数数组中的偶数:

int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

IntStream intStream = Arrays.stream(intArray);

intStream.filter(i -> i % 2 == 0).forEach(i -> System.out.println(i));

输出结果如下:

2

4

6

8

10

在此示例中,我们使用 stream() 方法将整数数组转换为一个 IntStream,并使用过滤器 filter() 操作过滤掉整数数组中的所有偶数,并使用 forEach() 操作输出结果。

4. Java Stream API Filter小结

在Java Stream API中,Filter操作是一种高效简单的集合过滤器。它可以根据指定的条件过滤集合中的元素,只保留符合条件的元素。通过学习本篇文章,您现在已经掌握了Java Stream API中Filter操作的使用方法和注意事项。

后端开发标签