Konvertieren von Array zu Liste in Java
Wie konvertiere ich ein array in eine Liste in Java?
Benutzte ich die Arrays.asList()
aber das Verhalten (und die Signatur) irgendwie verändert aus Java SE 1.4.2 (docs jetzt im Archiv) Acht und die meisten snippets fand ich auf der web-Nutzung die 1.4.2 Verhalten.
Beispiel:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- auf 1.4.2 gibt eine Liste mit den Elementen 1, 2, 3
- auf 1.5.0+ gibt eine Liste mit den array-spam
In vielen Fällen ist es sollte leicht zu erkennen sein, aber es kann manchmal unbemerkt:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
InformationsquelleAutor der Frage Alexandru | 2010-04-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem Beispiel, ist es, weil Sie nicht haben, können Sie eine Liste der primitive Typ. In anderen Worten,
List<int>
ist nicht möglich. Sie können, jedoch, haben eineList<Integer>
.Funktioniert wie erwartet.
InformationsquelleAutor der Antwort Joe Daley
Das problem ist, dass varargs kennengelernt in Java5 und leider
Arrays.asList()
bekam überladen mit vararg-version zu. SoArrays.asList(spam)
verstanden, durch den Java5-compiler als vararg-parameter von int-arrays.Dieses problem erläutert wird in mehr details in Effektive Java 2nd Ed., Kapitel 7, Artikel 42.
InformationsquelleAutor der Antwort Péter Török
Sprechen über Bekehrung Weg, es hängt davon ab, warum tun Sie müssen Ihre
List
.Wenn Sie es brauchen, nur um Daten zu Lesen. OK, hier gehen Sie:
Aber dann, wenn Sie so etwas tun:
erhalten Sie
java.lang.UnsupportedOperationException
.Also bei einigen Fällen müssen Sie noch dies:
Ersten Ansatz eigentlich nicht konvertieren array, sondern 'stellt' es wie ein
List
. Aber array ist unter der Haube mit all seinen Eigenschaften wie Feste Anzahl von Elementen. Bitte beachten Sie angeben müssen, geben Sie bei der KonstruktionArrayList
.InformationsquelleAutor der Antwort Roman Nikitchenko
In Java 8 verwenden, können Sie streams:
InformationsquelleAutor der Antwort Ibrahim Arief
Scheint es wenig zu spät aber hier sind meine zwei Cent. Wir können nicht
List<int>
alsint
ist ein primitiver Typ, so können wir nurList<Integer>
.Java 8 (int-array)
Java 8 und unten (Integer-array)
Müssen ArrayList und nicht Liste?
Fall, wir wollen eine bestimmte Implementierung der
List
z.B.ArrayList
dann können wirtoCollection
:Warum
list21
nicht strukturell geändert?Wenn wir
Arrays.asList
die Größe des zurückgegebenen Liste fixiert ist, weil die zurückgegebene Liste ist nichtjava.util.ArrayList
sondern eine private statische Klasse definiert, innerhalbjava.util.Arrays
. So, wenn wir hinzufügen oder entfernen von Elementen aus der zurückgegebenen Liste, eineUnsupportedOperationException
geworfen werden. Also sollten wir gehen mitlist22
wenn wir ändern möchten in der Liste. Wenn wir Java8 dann können wir auch gehen, mitlist23
.Klar zu sein
list21
geändert werden kann, im Sinne, dass wir anrufen könnenlist21.set(index,element)
aber diese Liste kann nicht strukturell modifiziert, d.h. Sie können nicht hinzufügen oder entfernen von Elementen aus der Liste. Sie können auch überprüfen, diese Frage.Wenn wir wollen, eine unveränderliche Liste, dann können wir wickeln es als:
InformationsquelleAutor der Antwort i_am_zero
Vor kurzem hatte ich zum konvertieren eines Arrays in eine Liste. Später auf dem Programm gefiltert, die Liste versucht zu löschen die Daten. Wenn Sie die Arrays.asList(array) - Funktion erstellen Sie eine Feste Größe der Sammlung: Sie können weder etwas hinzufügen noch löschen. Dieser Eintrag erklärt das problem besser als ich es kann: Warum erhalte ich eine UnsupportedOperationException, wenn Sie versuchen, entfernen Sie ein element aus einer Liste?.
Am Ende hatte ich eine "manuelle" Umwandlung:
Ich glaube, ich könnte Hinzugefügt haben, die Umwandlung von einem array in einer Liste mit einer Liste.addAll(items) Betrieb.
InformationsquelleAutor der Antwort Steve Gelman
Sogar noch kürzer:
InformationsquelleAutor der Antwort Vitaliy Sokolov
Verwendung Von Arrays
Dies ist die einfachste Möglichkeit zum konvertieren eines Arrays
List
. Allerdings, wenn Sie versuchen, ein neues element hinzuzufügen, oder entfernen Sie ein vorhandenes element aus der Liste, eineUnsupportedOperationException
geworfen werden.Mit ArrayList oder Andere Liste Implementierungen
Können Sie eine
for
Schleife, um alle Elemente des Arrays in eineList
Umsetzung, z.B.ArrayList
:Stream API in Java 8
Können Sie durch drehen des array in einen stream, dann sammeln stream mit anderen Sammlern: Die default-collector in Java 8 verwenden
ArrayList
hinter dem Bildschirm, aber Sie können auch zu verhängen Ihre bevorzugte Implementierung.Siehe auch:
InformationsquelleAutor der Antwort Mincong Huang
Wenn Sie auf Java 8 (oder höher), können Sie versuchen, diese:
HINWEIS:
Achten Sie auf die
Collectors.<Integer>toList()
diese generische Methode hilft Ihnen, zu vermeiden, wird der Fehler "Type mismatch: cannot convert fromList<Object>
zuList<Integer>
".InformationsquelleAutor der Antwort nybon
One-liner:
InformationsquelleAutor der Antwort Bhushan
In Java 9 haben Sie die noch elegantere Lösung mit immutable Listen über den neuen Komfort factory-Methode
Liste.
:(schamlos kopiert aus hier )
InformationsquelleAutor der Antwort PierluigiVernetto
Mit Guave:
Mithilfe Von Apache Commons Collections:
InformationsquelleAutor der Antwort Danail Tsvetanov
müssen Sie cast in an array
InformationsquelleAutor der Antwort Giancarlo Frison
Andere Problemumgehung, wenn Sie den apache commons-lang:
Wo ArrayUtils.toObject wandelt
int[]
zuInteger[]
InformationsquelleAutor der Antwort alaster
Hier unten sind mehrere Wege für die Umwandlung eines Array zu Liste in Java:
1 - Arrays.asList
Die Beschränkung der Verwendung dieser Methode ist, dass es gibt eine Feste Größe der Liste. Sie können nur Lesen und überschreiben Ihrer Elemente, jedoch, wenn Sie versuchen, hinzufügen/entfernen von Elementen aus der zurückgegebenen Liste erhalten Sie UnsupportedOperationException.
Damit generieren Sie eine Bearbeitbare Liste mit Arrays.aslist()tun Sie es wie diese:
2 - Java 8
In Java 8 verwenden, können Sie Arrays.stream() und Sammler.toList() utility-Methoden.
3 - Traditionelle Art und Weise
Können Sie auch die Umrechnung manuell durch Iteration über die Elemente der Array und ausfüllen ArrayList.
Referenz: Java – Array Konvertieren zu-Liste
InformationsquelleAutor der Antwort Hussein Terek
Also es hängt davon ab, welche Java-version Sie versuchen-
Java 7
ODER
ODER
In Java 8
Referenz - http://www.codingeek.com/java/how-to-convert-array-to-list-in-java/
InformationsquelleAutor der Antwort Hitesh Garg
Falls das hilft: ich habe das gleiche problem und schrieb nur eine generische Funktion, die einen array und gibt eine ArrayList mit dem gleichen Typ mit dem gleichen Inhalt:
InformationsquelleAutor der Antwort kleines filmröllchen
verwenden Sie zwei Zeile code zu konvertieren, array, Liste, wenn Sie es in integer-Wert
Sie verwenden müssen, autoboxing geben Sie für die primitiven Datentypen
InformationsquelleAutor der Antwort yousef