1

したがって、EOFに達するまで入力ファイルを読み取る簡単なものを作成します。ファイルはint-doubleペアで構成されます。2番目の配列のすべての要素の平均を計算し、最後に両方のデータセットをプリミティブデータ型のそれぞれの配列に格納します。

もちろん、タスクは簡単なので、問題はそれについて直接ではなく、配列部分についてです。保存する必要のあるペアの数がわからないため、2つのArrayListを使用して保存します。ただし、仕様では、intとdoubleの両方をプリミティブ配列に格納する必要があることを厳密に示しています。これが私の質問です。ArrayListをプリミティブ型の配列にコピーするよりも、これを行うためのより高速な方法はありますか?サイズや上限さえわからないため、最初から配列を使用できません。最後にプリミティブint[]とdouble[]が必要なため、toArray()を使用しても機能しません。 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

いいえ、それを行うための直接的な簡単な方法はありません。を単純な配列に変換するArrayListことは、ArrayList が自動的に大きくなる可能性があるため、それほど悪くはありませんが、予想よりも多くの要素がある場合は、新しい配列の割り当てに注意する必要があります。最終的には、まったく同じことを行うので何も変わりませんがArrayList、心配する必要はありません。

プリミティブ型と型に関しては、Java では問題ありません。ほぼ無料でボックス化解除してボックス化できます。

ちなみに、apache-commonsArrayUtilのクラスには、これを行うメソッドがあります。toPrimitive

于 2012-11-10T11:48:45.507 に答える