stream filter in
时间: 2023-07-13 17:18:54 浏览: 71
在 Java 8 中,可以使用 Stream API 来实现对集合或数组的过滤操作。其中,filter 方法可以用来过滤集合或数组中的元素,类似于 SQL 中的 WHERE 子句。
使用 filter 方法时,可以传入一个谓词(Predicate)作为参数,该谓词表示对元素的过滤条件。例如,可以使用 filter 方法来筛选出一个整数数组中的偶数,示例代码如下:
```java
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] evenArr = Arrays.stream(arr)
.filter(n -> n % 2 == 0)
.toArray();
System.out.println(Arrays.toString(evenArr)); // 输出 [2, 4, 6, 8]
```
上述代码中,使用 `Arrays.stream` 方法将整数数组转换为 `IntStream` 对象,然后调用 `filter` 方法对元素进行过滤,传入的谓词是 `n -> n % 2 == 0`,表示筛选出能够被 2 整除的元素。最后,使用 `toArray` 方法将过滤后的元素转换为整数数组。
如果需要对集合或数组进行 IN 操作,可以使用 `Stream.of` 方法将多个元素转换为 Stream 对象,然后使用 `filter` 方法对元素进行过滤。例如,可以筛选出一个字符串数组中包含某些特定字符串的元素,示例代码如下:
```java
String[] arr = {"apple", "banana", "orange", "pear"};
String[] filteredArr = Arrays.stream(arr)
.filter(s -> Stream.of("apple", "pear").anyMatch(s::equals))
.toArray(String[]::new);
System.out.println(Arrays.toString(filteredArr)); // 输出 [apple, pear]
```
上述代码中,使用 `Arrays.stream` 方法将字符串数组转换为 `Stream` 对象,然后使用 `filter` 方法对元素进行过滤,传入的谓词是 `s -> Stream.of("apple", "pear").anyMatch(s::equals)`,表示筛选出包含 "apple" 或 "pear" 的元素。最后,使用 `toArray` 方法将过滤后的元素转换为字符串数组。
阅读全文