Wie konvertiere ich int[]
inList<Integer>
in Java?
Natürlich interessiert mich jede andere Antwort, als sie Punkt für Punkt in einer Schleife zu machen. Wenn es jedoch keine andere Antwort gibt, werde ich diese als die beste auswählen, um zu zeigen, dass diese Funktionalität nicht Teil von Java ist.
java
arrays
collections
boxing
autoboxing
pupeno
quelle
quelle
Antworten:
Es gibt keine Abkürzung für die Konvertierung von
int[]
nach,List<Integer>
daArrays.asList
es sich nicht um Boxen handelt und nur eine erstellt wird,List<int[]>
die nicht Ihren Wünschen entspricht. Sie müssen eine Dienstprogrammmethode erstellen.quelle
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Streams
In Java 8 können Sie dies tun
quelle
Auch aus Guave Bibliotheken ... com.google.common.primitives.Ints:
quelle
Arrays.asList funktioniert nicht wie einige der anderen Antworten erwarten.
Dieser Code erstellt keine Liste mit 10 Ganzzahlen. Es wird 1 gedruckt , nicht 10 :
Dadurch wird eine Liste von Ganzzahlen erstellt:
Wenn Sie bereits über ein Ints-Array verfügen, gibt es keine schnelle Möglichkeit zum Konvertieren. Mit der Schleife sind Sie besser dran.
Wenn Ihr Array jedoch Objekte und keine Grundelemente enthält, funktioniert Arrays.asList wie folgt:
quelle
Ich werde eine andere Antwort mit einer anderen Methode hinzufügen; Keine Schleife, sondern eine anonyme Klasse, die die Autoboxing-Funktionen nutzt:
quelle
set
Methode hinzugefügt und jetzt kann ich sogar das Array sortieren ...Der kleinste Code wäre:
wo ArrayUtils von commons-lang kommt :)
quelle
ArrayUtils
Sie nur, dass es sich um eine relativ große Bibliothek für eine Android-App handeltArrayUtils.toPrimitive(...)
ist der Schlüssel.In Java 8 mit Stream:
oder mit Sammlern
quelle
In Java 8:
quelle
Wenn Sie Java 8 verwenden, können wir die Stream-API verwenden, um sie in eine Liste zu konvertieren.
Sie können den IntStream auch zum Konvertieren verwenden.
Es gibt auch andere externe Bibliotheken wie Guava und Apache Commons, die ebenfalls konvertiert werden können.
Prost.
quelle
Es lohnt sich auch, diesen Fehlerbericht zu lesen , der mit dem Grund "Kein Fehler" und dem folgenden Text geschlossen wurde:
"Autoboxing ganzer Arrays ist aus gutem Grund kein spezifiziertes Verhalten. Es kann für große Arrays unerschwinglich teuer sein."
quelle
Probieren Sie diese Klasse aus:
Testfall:
quelle
Der beste Schuss:
Beispiele:
quelle
Wenn Sie offen sind, eine Bibliothek eines Drittanbieters zu verwenden, funktioniert dies in Eclipse-Sammlungen :
Hinweis: Ich bin ein Committer für Eclipse-Sammlungen .
quelle
quelle
Was ist damit:
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
quelle
Hier ist eine Lösung:
Ausgabe:
quelle
Hier ist eine andere Möglichkeit, wieder mit Java 8 Streams:
quelle
Hier ist eine generische Methode zum Konvertieren von Arrays in ArrayList
Verwendungszweck
quelle
sieh das
quelle