Wie konvertiere ich in Java ein Array in eine Liste?
Ich habe die "Arrays.asList()" verwendet, aber das Verhalten (und die Signatur) irgendwie von Java SE 1.4.2 (Dokumente jetzt im Archiv) zu 8 geändert und die meisten Schnipsel, die ich im Web gefunden habe, verwenden das 1.4.2 Verhalten.
Zum Beispiel:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
In vielen Fällen sollte es leicht zu erkennen sein, aber manchmal kann es sich unbemerkt einschleichen:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
In Ihrem Beispiel liegt es daran, dass Sie keine Liste eines primitiven Typs haben können. Mit anderen Worten: "Liste
Sie können jedoch eine Liste<Integer>
haben, indem Sie die Klasse Integer
verwenden, die das Primitivum int
umhüllt. Konvertieren Sie Ihr Array in eine Liste
mit der Arrays.asList
Utility Methode.
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
Sehen Sie sich diesen Code live auf IdeOne.com an.
Das Problem ist, dass varargs in Java5 eingeführt wurde und unglücklicherweise wurde Arrays.asList()
auch mit einer vararg-Version überladen. So wird "Arrays.asList(spam)" vom Java5-Compiler als vararg-Parameter von int-Arrays verstanden.
Dieses Problem wird in Effective Java 2nd Ed. in Kapitel 7, Punkt 42 ausführlicher erklärt.
müssen Sie in ein Array werfen
Arrays.asList((Object[]) array)