将多数组转换为单个数组(java)

convert multi array into single array(java)

是否可以将数据从multi[][]复制到single[]????

1
double multi[][] = { {1.0, 2.0}, {2.11, 204.00, 11.00, 34.00},{66.5,43.3,189.6}};

1
double single [] = {1.0, 2.0, 2.11, 204.00, 11.0, 66.5,43.3,189.6}


用Java 8可以编写:

1
2
3
double[] single = Arrays.stream(multi) //Creates a Stream<double[]>
            .flatMapToDouble(Arrays::stream) //merges the arrays into a DoubleStream
            .toArray(); //collects everything into a double[] array


这是完全可能的。每一个AssiLaas的答案,Java 8有一个非常好的解决方案。如果你不使用Java 8,你必须手工做一些工作。由于multi元素的长度不同,最有效的方法是使用两个过程:第一个是计算结果中需要多少元素,第二个是在分配数组后实际复制元素:

1
2
3
4
5
6
7
8
9
10
int n = 0;
for (int[] elt : multi) {
    n += elt.length;
}
double[] single = new double[n];
n = 0;
for (int[] elt : multi) {
    System.arraycopy(elt, 0, single, n, elt.length);
    n += elt.length;
}

如果multi的元素可能是null,那么您需要在每个循环中添加适当的检查。


如果你想要一个合乎逻辑的方法..首先你必须找到多个数组内容的长度,然后用这个长度创建一个[]并添加值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
double multy[][] = { {1.0, 2.0}, {2.11, 204.00, 11.00, 34.00},{66.5,43.3,189.6}};
int y=0;
for(int x=0;x<multy.length,x++){
    for(int i=0;i<multy[x].length,i++){
       y++;
    }
}
double single [] =new double[y];
y=0;

for(int x=0;x<multy.length,x++){
    for(int i=0;i<multy[x].length,i++){
       y++;
       single[y]==multy[x][i];
    }
}


根据:https://stackoverflow.com/questions/20686499/java-how-to-convert-a-multimedianal-array-to-single-array-easyly

arrayutils.addall(array1,array2)