stream过滤String二维数组并更新数组
时间: 2024-04-14 20:29:58 浏览: 102
要使用流来过滤String二维数组并更新数组,您可以按照以下步骤进行操作:
1. 创建一个String类型的二维数组,并初始化它:
```java
String[][] matrix = {
{ "apple", "banana", "cherry" },
{ "orange", "grape", "kiwi" },
{ "pear", "mango", "pineapple" }
};
```
2. 将二维数组转换为流:
```java
Stream<String[]> stream = Arrays.stream(matrix);
```
3. 使用`filter`操作来过滤元素。例如,假设您希望过滤掉所有以字母"a"开头的字符串:
```java
stream = stream.map(arr -> Arrays.stream(arr)
.filter(str -> !str.startsWith("a"))
.toArray(String[]::new));
```
在上述示例中,我们使用`filter`操作来排除以字母"a"开头的字符串。然后,我们使用`toArray`来收集过滤后的元素并将其转换回String类型的数组。
4. 将过滤后的流转换回二维数组:
```java
String[][] filteredMatrix = stream.toArray(String[][]::new);
```
此时,`filteredMatrix`就是过滤后的二维数组。
完整的代码示例如下:
```java
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
String[][] matrix = {
{ "apple", "banana", "cherry" },
{ "orange", "grape", "kiwi" },
{ "pear", "mango", "pineapple" }
};
Stream<String[]> stream = Arrays.stream(matrix);
stream = stream.map(arr -> Arrays.stream(arr)
.filter(str -> !str.startsWith("a"))
.toArray(String[]::new));
String[][] filteredMatrix = stream.toArray(String[][]::new);
// 打印过滤后的二维数组
for (String[] arr : filteredMatrix) {
System.out.println(Arrays.toString(arr));
}
}
}
```
请注意,上述代码中的过滤条件为排除以字母"a"开头的字符串。您可以根据自己的需求更改过滤条件以及其他操作。
阅读全文