3

重複の可能性:
Java で List<Integer> を int[] に変換する方法は?

Java では、最速のソリューションを下回っています。

public convert(ArrayList<Integer> IntegerList) {

    int s = IntegerList.size();
    int[] intArray = new int[s];
    for (int i = 0; i < s; i++) {
        intArray[i] = IntegerList.get(i).intValue();
    }
}

?

4

4 に答える 4

5

最速の方法は、そもそもを使用しないことArrayList<Integer>です。TIntArrayListどちらが int[] をラップするか、最初から a を使用してみてくださいint[]

何らかの理由で ArrayList を使用する必要があり、それを修正できない場合は、機能する方法が必要であり、パフォーマンスはそれほど重要ではありません。

int[] ints = new int[list.size()];
for(int i=0, len = list.size(); i < len; i++)
   ints[i] = list.get(i);
于 2012-08-14T12:55:38.887 に答える
5

プレーンなJavaで現在持っているよりも優れたソリューションは考えられません。ただし、Guavaを使用すると、おそらく単純化できます。

public convert(List<Integer> list) {
 int[] ar = Ints.toArray(list); //Ints is the class from Guava library
}
于 2012-08-14T13:00:11.110 に答える
2
public void convert(ArrayList<Integer> IntegerList) {
        int[] intArray = new int[IntegerList.size()];
        int count = 0;
        for(int i : IntegerList){
            intArray[count++] = i;
        }
 }

UPDATE : Q. foreach ループは、通常の for ループよりも高速/優れている/異なるのですか?
A.こちら

于 2012-08-14T12:59:15.967 に答える
0
 Integer[] intArray = IntegerList.toArray(new Integer[IntegerList.size()]);
于 2012-08-14T12:50:13.690 に答える