Was ich suche, ist eine Möglichkeit, eine Sammlung eines Typs in eine Sammlung eines anderen Typs mit Streams und map ohne eine vordefinierte Funktion / Funktion zu konvertieren Schnittstelle, die Objekt A in Objekt B konvertiert. Java 6 Beispiel:
%Vor%Ich suche etwas in den folgenden Zeilen:
%Vor%Was natürlich nicht funktioniert, aber Sie bekommen den Kern dessen, was ich versuche zu tun.
Nachdem Sie das Mapping durchgeführt haben, müssen Sie die gemappten Objekte sammeln :
%Vor% In Ihrem Beispielcode fehlt einfach die Operation terminal collect
, um die Elemente von Stream<ObjectB>
, die von Ihrer Operation map
zurückgegeben wurden, in einem List<ObjectB>
:
Wenn Sie Ihrer Klasse ObjectB
einen Konstruktor hinzufügen, der einen Parameter vom Typ ObjectA
akzeptiert und die ID festlegt, können Sie Ihren Code vereinfachen:
d. In ObjectB
fügen Sie diesen Konstruktor hinzu:
Und dein Code wird:
%Vor%Für Anhänger
%Vor%nach einer Kartenkonvertierung bedeutete eigentlich, dass "Sie die Ausgabe Ihres Streams an eine Methode übergeben, die dies nicht als Parameter akzeptiert" (die Streamkartenkonvertierung selbst funktioniert tatsächlich), oder Sie weisen sie zu zu einer Variable, die von einem anderen Typ ist.
Sie können es direkt konvertieren, indem Sie den Verweis der ersten Auflistung an einen anderen Konstruktor für die Sammlung parametrisieren.
Beispiel:
%Vor%Die Größe von 5 wird in einer anderen Sammlung auf 4 verringert, da die List-Liste Duplikate enthält, während die Option "Set" nicht vorhanden ist.
Ausgabe:
5
4
Ausgabe = AA
Ausgabe = cc
Ausgabe = dd
output = ee
Tags und Links java java-8 collections