1

所以我要写一个简单的东西,它读取输入文件直到 EOF 到达 - 该文件由 int-double 对组成。我要计算第二个数组中所有元素的平均值,最后将两组数据存储在各自的原始数据类型数组中。

当然,这个任务很简单,所以问题不直接与它有关——而是关于数组部分。因为我不知道要存储多少对,所以我使用两个 ArrayList 来存储它。然而,规范严格指出最后,整数和双精度数都必须存储在原始数组中——这就是我的问题。有没有比将 ArrayList 复制到原始类型数组更快的方法?我不能从一开始就使用数组,因为我不知道大小甚至上限,并且使用 toArray() 也行不通,因为最后我必须有原始 int[] 和 double[],不是 Integer[] 和 Double[] 的对象。

4

2 回答 2

2

您应该能够从 Double 转换为原始 double。

就像是:

    ArrayList<Double> test = new ArrayList<Double>();
    //Get your values into the ArrayList here.

    double[] values = new double[test.size()];
    for(int i = 0; i < test.size(); i++){
        values[i] = test.get(i).doubleValue();
    }

据我所知,没有比直接复制它更“好”的方法了......

于 2012-11-10T11:47:03.497 回答
1

不,没有直接简单的方法可以做到这一点。将 an 转换ArrayList为普通数组并没有那么糟糕,因为 ArrayList 可以自动增长,而如果您的元素比您预期的多,您应该注意分配一个新数组。最后什么都不会改变,因为ArrayList完全相同的事情,但无需担心。

至于原始类型与类型在 Java 中没有问题,您几乎可以免费拆箱和装箱。

顺便说一句ArrayUtilapache-commonstoPrimitive类具有为您执行此操作的方法。

于 2012-11-10T11:48:45.507 回答