Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个阵列组合成一个阵列的最佳方法是什么_Java_Arrays - Fatal编程技术网

Java 将多个阵列组合成一个阵列的最佳方法是什么

Java 将多个阵列组合成一个阵列的最佳方法是什么,java,arrays,Java,Arrays,嘿,我试着把几个double类型的数组合并成一个数组,最好的方法是什么?谢谢 创建一个大小合适的数组(通过遍历并求和所有源数组的长度) 反复调用System.arraycopy,一次将一个源数组复制到目标数组中,并在每次迭代时更新将其复制到的位置 比如: public static double[] Combine(double[][] arrays) { int totalLength = 0; for (double[] source : arrays) {

嘿,我试着把几个double类型的数组合并成一个数组,最好的方法是什么?谢谢

  • 创建一个大小合适的数组(通过遍历并求和所有源数组的长度)
  • 反复调用
    System.arraycopy
    ,一次将一个源数组复制到目标数组中,并在每次迭代时更新将其复制到的位置
比如:

public static double[] Combine(double[][] arrays)
{
    int totalLength = 0;
    for (double[] source : arrays)
    {
        totalLength += source.length;
    }
    double[] ret = new double[totalLength];
    int index = 0;
    for (double[] source : arrays)
    {
        System.arraycopy(source, 0, ret, index, source.length);
        index += source.length;
    }
    return ret;
}
  • 创建一个大小合适的数组(通过遍历并求和所有源数组的长度)
  • 反复调用
    System.arraycopy
    ,一次将一个源数组复制到目标数组中,并在每次迭代时更新将其复制到的位置
比如:

public static double[] Combine(double[][] arrays)
{
    int totalLength = 0;
    for (double[] source : arrays)
    {
        totalLength += source.length;
    }
    double[] ret = new double[totalLength];
    int index = 0;
    for (double[] source : arrays)
    {
        System.arraycopy(source, 0, ret, index, source.length);
        index += source.length;
    }
    return ret;
}

您可以从Guava库使用此方法,该库是开源的,可能在本月晚些时候会有一个实际的二进制版本:

您可以从Guava库使用此方法,该库是开源的,可能在本月晚些时候会有一个实际的二进制版本:

最可维护还是最高效?复制:最可维护还是最高效?复制:只有在有大约16 GB的数据时才会发生溢出吗?永远不要低估对输入的限制:你是说总长度溢出吗?嗯,我只是开玩笑,但是的,你需要16 GB的双倍数据才能溢出。然而,我确信有些应用程序确实如此。我认为JDK 7的改进之一是使用
long
长度的数组。此功能已被删除。无论如何都要检查->只有在有大约16GB的数据时才会发生溢出吗?永远不要低估输入的限制:你是说总长度溢出吗?我只是开玩笑,但是是的,你需要16GB的双倍数据才能溢出。然而,我确信有些应用程序确实如此。我认为JDK 7的改进之一是使用
long
长度的数组。此功能已被删除。无论如何都会检查它->