stream过滤二维数组
时间: 2023-08-24 08:54:04 浏览: 118
您可以使用流来过滤二维数组。首先,将二维数组转换为流,然后使用流操作来过滤元素。
假设我们有一个名为`matrix`的二维数组,您可以按照以下步骤进行过滤:
1. 将二维数组转换为流:
```java
Stream<int[]> stream = Arrays.stream(matrix);
```
2. 使用`filter`操作来过滤元素。例如,假设您希望过滤掉所有小于10的元素:
```java
stream = stream.filter(arr -> Arrays.stream(arr).allMatch(num -> num >= 10));
```
在上述示例中,我们使用了`allMatch`来确保二维数组中的所有元素都大于等于10。您可以根据自己的需求更改过滤条件。
3. 可选:如果您希望将过滤后的结果收集到一个新的二维数组中,可以使用`toArray`操作:
```java
int[][] filteredMatrix = stream.toArray(int[][]::new);
```
这将返回一个新的二维数组`filteredMatrix`,其中包含经过过滤后的元素。
完整的代码示例如下:
```java
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
Stream<int[]> stream = Arrays.stream(matrix);
stream = stream.filter(arr -> Arrays.stream(arr).allMatch(num -> num >= 10));
int[][] filteredMatrix = stream.toArray(int[][]::new);
// 打印过滤后的二维数组
for (int[] arr : filteredMatrix) {
System.out.println(Arrays.toString(arr));
}
}
}
```
请注意,上述代码中的过滤条件为元素值大于等于10的情况。您可以根据自己的需求更改过滤条件。
阅读全文