java - 如何解压二维数组?
问题描述
如果我有一个二维数组:
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
我将如何将其解压缩成:
int[] a = {1, 2, 3, 4, 5, 6, 9, 7}
我知道你可以使用 for 循环来做到这一点,但它看起来真的很笨重,我想知道是否有更好的方法来做到这一点:
int[] b = new int[9]
for (int i = 0; i < a.length; ++i) {
for(int j = 0; j < a[i].length; ++j) {
b.append([i][j])
}
}
解决方案
使用流很容易。
- 第一个流返回单独的一维数组(本质上是行)。
- 下一个将它们中的每一个扁平化为单个流。
- 然后将该流收集回一个数组。
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
int[] oneD = Arrays.stream(a).flatMapToInt(Arrays::stream).toArray();
System.out.println(Arrays.toString(oneD));
印刷
[1, 2, 3, 4, 5, 6, 9, 7]
推荐阅读
- python - 有没有办法在 PyQt5 中动态更改背景颜色?
- laravel - Laravel 5.5 查询(子查询)pluck
- python - TypeError:尝试在python中进行子图绘制时,'tuple'对象不可调用
- cordova - 如何在用户处于屏幕锁定状态(离子)时触发事件?
- swagger - 如何在 APIGateway/Swagger 中将响应 Header Content-Type 设置为 application/xml
- pandas - 使用 sumifs 将列添加到 pandas DF
- linux - Yocto - 如何将空目录添加到文件树
- c++ - 在通知未知线程数的条件变量中避免错误唤醒
- r - 映射功能时出错/当我逐个手动运行它时工作正常;为什么?
- c# - 异步任务控制器未重定向到操作