java 二维数组转换为stream流
时间: 2023-11-08 09:56:47 浏览: 204
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 二维数组转换为List<List<Integer>>
在Java中,将二维数组转换为`List<List<Integer>>`可以使用流(Stream) API以及`Collectors.toList()`方法。这里是一个简单的示例:
```java
int[][] twoDimensionalArray = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
List<List<Integer>> listOfLists = Arrays.stream(twoDimensionalArray)
.map(Arrays::stream)
.collect(Collectors.toList());
```
首先,使用`Arrays.stream(array)`将二维数组转换为一维流,然后对每个元素应用`Arrays::stream`将其内部元素也转换为流。最后,使用`collect(Collectors.toList())`将所有流收集到一个`List<List<Integer>>`中。
现在,`listOfLists`包含了原二维数组的所有元素,每一项都是一个包含原始数组内对应行数据的列表。
阅读全文