java - 在没有arraycopy的情况下附加2个二维数组
问题描述
我需要在不使用 arraycopy 的情况下附加 2 个二维数组,并按顺序,首先是 arr1,然后是 arr2,如下所示:
int[][] arr1 = {{1,2},{7,9,10}};
int[][] arr2 = {{3,5,7,9},{16,10,11}};
int[][] arr3 = append(arr1,arr2);
result should be:
1 2
7 9 10
3 5 7 9
16 10 11
我试过了:
public static int[][] append(int[][] arr1, int[][] arr2) {
int [][] arr3 = new int [arr1.length + arr2.length][];
for (int i=0; i<arr1.length; i=i+1) {
for (int j=0; j<arr1[i].length; j=j+1) {
arr3[i][j] = arr1[i][j];
}
}
for (int x=arr1.length; x<arr3.length-2; x=x+1) {
int a=0;
for (int y=0; y<arr2[a].length; y=y+1) {
arr3[x][y] = arr2[a][y];
a=a+1;
}
}
return arr3;
}
但我在'arr3 [i] [j] = arr1 [i] [j];'行得到一个空指针异常 我能做些什么?谢谢您的帮助!!
解决方案
您可以使用流
(虽然它们慢了几毫秒)
int[] array = IntStream.concat(
IntStream.concat(IntStream.of( arr1[0] ), IntStream.of( arr1[1] )),
IntStream.concat(IntStream.of( arr2[0] ), IntStream.of( arr2[1] )) )
.flatMap(IntStream::of).toArray();
arr1
直接使用arr2
:
Stream.of( arr1, arr2 ).flatMap(Stream::of).flatMapToInt(IntStream::of).toArray();
得到:[1, 2, 7, 9, 10, 3, 5, 7, 9, 16, 10, 11]
推荐阅读
- php - 如何将子文件夹别名或重写为域
- java - Javafx单选按钮定向绑定
- c - 标志 O_CREAT 不创建文件
- javascript - 进度条背景颜色未在 jquery 中显示
- php - 使用 unlink 方法从路径和数据库中删除图像
- javascript - 我可以将类添加到动态创建的 two.js 元素吗?
- android - 想要在我的 android 应用程序中显示存储在 onedrive 上的 .html 文件的 HTML 输出
- db2 - 如何为 db2 表中的行子集创建唯一索引
- css - 对齐表格,居中(td)并将文本留在 td 内
- java - Java:替代声明空构造函数以从另一个类初始化对象