Javaで配列をリストに変換する
Javaで配列をリストに変換するにはどうしたらいいですか?
私はArrays.asList()
を使用していましたが、Java SE 1.4.2 (docs now in archive)から[8][2]に動作(および署名)が何らかの形で変更され、ウェブ上で見つけたほとんどのスニペットは1.4.2の動作を使用しています。
例えば
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- 1.4.2 では、1, 2, 3 の要素を含むリストを返します。
- 1.5.0+では、配列spamを含むリストを返します。
多くの場合、発見するのは簡単なはずですが、気づかれないままになってしまうこともあります。
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
[2]: https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#asList-T...-
948
3
あなたの例では、プリミティブ型のListを持つことができないからです。つまり、
List
は不可能なのです。しかし、
int
プリミティブをラップした[Integer][1]クラスを使えば、
Listを作ることができます。Arrays.asList
](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Arrays.html#asList(T...))ユーティリティーメソッドを使用して,配列を[`List`][2]に変換します.この code run live at IdeOne.com をご覧ください。
[1]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Integer.html
問題は、Java5でvarargsが導入され、残念ながら、
Arrays.asList()
もvarargバージョンでオーバーロードされてしまったことです。そのため、Java5のコンパイラは、Arrays.asList(spam)
をint型配列のvarargパラメータとして理解してしまいます。この問題については,Effective Java 2nd Ed.の第7章,Item 42で詳しく説明されています。
配列するにはキャストインしなければなりません。