1. ホーム
  2. java

[解決済み] Integerを含むArrayListをprimitive int配列に変換する方法は?

2022-03-24 06:25:14

質問

Integerオブジェクトを含むArrayListをプリミティブなint[]に変換するコードを書いていますが、コンパイル時にエラーが発生します。Javaで変換することは可能でしょうか?

List<Integer> x =  new ArrayList<Integer>();
int[] n = (int[])x.toArray(int[x.size()]);

解決方法は?

変換はできますが、自動で行うようなものは内蔵されていないと思います。

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    for (int i=0; i < ret.length; i++)
    {
        ret[i] = integers.get(i).intValue();
    }
    return ret;
}

(のどちらかを指定すると NullPointerException をスローします。 integers またはその中の任意の要素が null .)

EDIT: コメントにあるように、以下のようなリストで厄介なコストを避けるために、リスト・イテレータを使用したい場合があります。 LinkedList :

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++)
    {
        ret[i] = iterator.next().intValue();
    }
    return ret;
}