Konvertierung eines Arrays in eine Liste in Java

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)
  • unter 1.4.2 gibt eine Liste mit den Elementen 1, 2, 3 zurück
  • auf 1.5.0+ gibt eine Liste zurück, die das Array spam enthält

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);
Lösung

In Ihrem Beispiel liegt es daran, dass Sie keine Liste eines primitiven Typs haben können. Mit anderen Worten: "Liste" ist nicht möglich.

Sie können jedoch eine Liste 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 list = Arrays.asList(spam);

Sehen Sie sich diesen Code live auf IdeOne.com an.

Kommentare (16)

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.

Kommentare (2)

müssen Sie in ein Array werfen

Arrays.asList((Object[]) array)
Kommentare (2)