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

时间:2014-11-04 16:26:31

标签: java arrays

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

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

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

4 个答案:

答案 0 :(得分:4)

使用Java 8,您可以写:

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

答案 1 :(得分:2)

完全有可能。根据{{​​3}},Java 8有一个非常好的解决方案。如果您不使用Java 8,则必须手动完成一些工作。由于multi元素的长度不同,最有效的方法是使用两个遍:第一个计算结果中需要多少个元素,第二个用于实际复制元素。我分配了数组:

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,那么您需要在每个循环中添加适当的检查。

答案 2 :(得分:1)

如果你想要一个逻辑方式..首先你必须找到多数组内容的长度。然后使用该长度制作单个[]并添加值

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];
    }
}

答案 3 :(得分:0)