如何将2维数组int originalArray[][]
展平为1维数组?
int a [] = {1,2,6,7,2};
int b [] = {2,44,55,2};
int c [] = {2,44,511,33};
int originalArray [][] = new int[][]{a,b,c};
发布于 2010-04-03 05:32:48
一个简单的for循环就可以了,这并不困难,但这取决于您想要复制值的顺序。例如(基于在您的示例中数组都具有相同长度的事实):
int[] newArray = new int[3 * a.length];
int index = 0;
for (int n = 0; n < a.length; n++) {
newArray[index++] = a[n];
newArray[index++] = b[n];
newArray[index++] = c[n];
}
或者(不同的顺序,a,b,c可以有不同的长度):
int[] newArray = new int[a.length + b.length + c.length];
System.arraycopy(a, 0, newArray, 0, a.length);
System.arraycopy(b, 0, newArray, a.length, b.length);
System.arraycopy(c, 0, newArray, a.length + b.length, c.length);
发布于 2010-04-08 13:31:19
发布于 2015-02-04 01:58:00
使用Java8,您可以"flatMap“内部数组:
int[] flatArray = Arrays.stream(originalArray)
.flatMapToInt(Arrays::stream)
.toArray();
或者:
int[] flatArray = Stream.of(a, b, c)
.flatMapToInt(Arrays::stream)
.toArray();
https://stackoverflow.com/questions/2569279
复制相似问题