1. ホーム
  2. java

[解決済み] JavaでList<Integer>をint[]に変換する方法とは?[重複しています。]

2022-03-14 02:51:36

質問

この質問と似ていますね。 Javaでint[]をInteger[]に変換する方法は?

私はJavaの初心者です。どのようにすれば List<Integer> から int[] をJavaで表示できますか?私は混乱しています。 List.toArray() は、実際には Object[] にキャストすることができます。 Integer[] または int[] .

今は、ループを使ってやっています。

int[] toIntArray(List<Integer> list){
  int[] ret = new int[list.size()];
  for(int i = 0;i < ret.length;i++)
    ret[i] = list.get(i);
  return ret;
}

もっといい方法があると思うのですが。

どのように解決するのですか?

残念ながら、私は、本当に Java のプリミティブ型、ボックス化、配列、ジェネリックの取り扱いの性質上、より良い方法を見つけることができます。特に

  • List<T>.toArray からの変換がないため、動作しません。 Integer から int
  • を使用することはできません。 int をジェネリックの型引数として使用します。 ある であることが必要です。 int -特有のメソッド(または厄介なトリックを行うためにリフレクションを使用したメソッド)。

この種のメソッドをすべてのプリミティブ型に対して自動生成している(つまり、型ごとにコピーされるテンプレートがある)ライブラリがあると思います。醜いですが、それが現実なのです :(

にもかかわらず Arrays クラスはJavaにジェネリックが導入される前に登場しましたが、もし今日導入されたとしても、恐ろしいオーバーロードをすべて含まなければなりません(プリミティブ配列を使いたい場合を想定しています)。