@KarlRichter Die andere Frage gibt Ihnen keine getippte Liste. Auch diese Frage war von vor vier Jahren und hat eine Antwort mit mehr als 300 Upvotes. Warum versuchen wir es jetzt zusammenzuführen?
Die boxedMethode konvertiert die intprimitiven Werte von IntStreamin in einen Objektstrom Integer. Das Wort "Boxen" bezeichnet den int⬌- IntegerKonvertierungsprozess. Siehe Oracle Tutorial .
@skiwi Ich meine, dass alle anderen Antworten nach dieser nicht mehr benötigt werden, da sie nicht so natürlich wären.
Dmitry Ginzburg
1
Danke, ich hatte die Boxmethode noch nicht gesehen und sie funktionierte wie ein Zauber.
Twreid
Ergänzung: Ich denke, dieser Code wird etwas kürzer, klarer und hübscher, wenn Sie einen statischen Import von verwenden toList. Dazu setzen Sie Folgendes unter die Importe der Datei : static import java.util.stream.Collectors.toList;. Dann liest der Sammelruf gerade .collect(toList()).
Lii
1
In Eclipse kann die IDE einen statischen Import für Methoden hinzufügen. Dazu fügen Sie die CollectorsKlasse unter Einstellungen -> Java -> Editor -> Inhaltsassistent -> Favoriten hinzu . Danach müssen Sie nur noch toLibei gedrückter Strg + Leertaste eingeben , damit die IDE ausgefüllt toListund der statische Import hinzugefügt wird.
Lii
2
Ich habe mir die Haare herausgerissen, was mit dem, was ich versucht hatte, nicht stimmte. Danke, dass Sie auf den boxed()Teil hingewiesen haben
K Raphael
16
Sie können auch mapToObj () für einen Stream verwenden, der eine IntFunction verwendet und einen Stream mit Objektwert zurückgibt, der aus den Ergebnissen der Anwendung der angegebenen Funktion auf die Elemente dieses Streams besteht.
Obwohl Eclipse-Sammlungen normalerweise sehr hilfreich sind, sieht es nicht so aus, als würde es irgendetwas einfacher machen :)
Ben
1
Seit EC 9.0 können Sie eine primitive Liste aus einem primitiven Stream erstellen. MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
Donald Raab
1
Dies ist, wonach ich gesucht habe. Das Boxen des int-Streams in Integer oder in Object ist etwas anderes
Vikash
2
Finden Sie das folgende Beispiel zum Finden des Quadrats jedes int-Elements mit Java 8: -
Hinweis: Der dritte Parameter ist nur erforderlich, wenn Sie die parallele Erfassung ausführen möchten. Für die sequentielle Sammlung reichen nur die ersten beiden aus.
Antworten:
IntStream::boxed
IntStream::boxed
verwandelt einIntStream
in einStream<Integer>
, das Sie danncollect
in einList
:Die
boxed
Methode konvertiert dieint
primitiven Werte vonIntStream
in in einen ObjektstromInteger
. Das Wort "Boxen" bezeichnet denint
⬌-Integer
Konvertierungsprozess. Siehe Oracle Tutorial .quelle
toList
. Dazu setzen Sie Folgendes unter die Importe der Datei :static import java.util.stream.Collectors.toList;
. Dann liest der Sammelruf gerade.collect(toList())
.Collectors
Klasse unter Einstellungen -> Java -> Editor -> Inhaltsassistent -> Favoriten hinzu . Danach müssen Sie nur nochtoLi
bei gedrückter Strg + Leertaste eingeben , damit die IDE ausgefüllttoList
und der statische Import hinzugefügt wird.boxed()
Teil hingewiesen habenSie können auch mapToObj () für einen Stream verwenden, der eine IntFunction verwendet und einen Stream mit Objektwert zurückgibt, der aus den Ergebnissen der Anwendung der angegebenen Funktion auf die Elemente dieses Streams besteht.
quelle
boxed()
delegiert dies an.Sie können primitive Sammlungen verwenden, die in Eclipse- Sammlungen verfügbar sind, und das Boxen vermeiden.
Hinweis: Ich bin ein Mitarbeiter von Eclipse Collections.
quelle
MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
Finden Sie das folgende Beispiel zum Finden des Quadrats jedes int-Elements mit Java 8: -
quelle
Sie können die Erfassungsmethode verwenden:
Tatsächlich ist dies fast genau das, was Java tut, wenn Sie .collect (Collectors.toList ()) für einen Objektstrom aufrufen:
Hinweis: Der dritte Parameter ist nur erforderlich, wenn Sie die parallele Erfassung ausführen möchten. Für die sequentielle Sammlung reichen nur die ersten beiden aus.
quelle