据我所知从二维数组中获取Stream但我想知道如何从3维数组中获取Stream?
int[][][] data = {
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
},
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}
};
答案 0 :(得分:5)
如果你能用二维数组做到这一点,那么为N
维数组做这件事并不困难。
解决方案可按如下方式完成:
IntStream result = Arrays.stream(data)
.flatMap(Arrays::stream)
.flatMapToInt(Arrays::stream);
为了更好地帮助理解上面发生的事情,您可以按如下方式拆分方法调用:
// the call to Arrays.stream yields a Stream<int[][]>
Stream<int[][]> result1 = Arrays.stream(data);
// the call to flatMap yields a Stream<int[]>
Stream<int[]> result2 = result1.flatMap(Arrays::stream);
// the call to flatMapToInt yields a IntStream
IntStream intStream = result2.flatMapToInt(Arrays::stream);
答案 1 :(得分:2)
您只需再次致电flatMap
即可将信息流从int[][]
更改为int[]
信息流。
IntStream stream = Arrays.stream(data)
.flatMap(twoDArray -> Arrays.stream(twoDArray))
.flatMapToInt(oneDArray -> Arrays.stream(oneDArray));