java 二维数组转换为stream流
时间: 2023-11-08 18:56:47 浏览: 79
Java 中可以使用 Arrays.stream() 或 Stream.of() 将二维数组转换为流。
例如:
int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Stream<int[]> stream1 = Arrays.stream(array);
或者
Stream<int[]> stream2 = Stream.of(array);
转换为数组中每个元素的流,使用flatMap()
Stream<Integer> stream3 = Arrays.stream(array).flatMap(Arrays::stream);
或者
Stream<Integer> stream4 = Stream.of(array).flatMap(Arrays::stream);
最后使用 forEach() 来遍历数组中的每个元素。
stream4.forEach(System.out::println);
相关问题
java 两个二维数组相加用stream流处理
可以使用Java 8 Stream API将两个二维数组相加。
首先,将两个二维数组转换成一维数组,使用flatMap()函数将二维数组转换成一维数组。然后使用mapToInt()函数将一维数组中的每个元素转换成一个IntStream。最后使用sum()函数计算总和。
示例代码如下:
```
int[][] array1 = {{1, 2, 3}, {4, 5, 6}};
int[][] array2 = {{7, 8, 9}, {10, 11, 12}};
int sum = Stream.of(array1, array2)
.flatMapToInt(Arrays::stream)
.sum();
System.out.println(sum); // Outputs 78
```
如果需要将两个二维数组相加并返回一个新的二维数组,可以使用IntStream.range()函数遍历数组中的所有元素,并使用map()函数将对应元素相加。
示例代码如下:
```
int[][] array1 = {{1, 2, 3}, {4, 5, 6}};
int[][] array2 = {{7, 8, 9}, {10, 11, 12}};
int[][] sumArray = IntStream.range(0, array1.length)
.mapToObj(i -> IntStream.range(0, array1[i].length)
.map(j -> array1[i][j] + array2[i][j])
.toArray())
.toArray(int[][]::new);
```
Java二维数组的foreach遍历形式
Java二维数组的foreach遍历形式可以使用嵌套循环,也可以使用Java 8的Stream API。嵌套循环的形式如下:
```
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
int value = arr[i][j];
// 处理元素
}
}
```
使用Java 8的Stream API可以将二维数组转换为流,然后使用forEach方法遍历。代码示例如下:
```
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Arrays.stream(arr)
.flatMapToInt(Arrays::stream)
.forEach(value -> {
// 处理元素
});
```
以上两种方式都可以遍历二维数组,并在循环中处理每个元素。