Java Stream Collector

Java Stream Collector
Der Java -Stream ist die Abfolge von Elementen einer Quelle, die aggregierte Operationen ermöglicht. Die Elemente in Streams werden nach Bedarf berechnet, aber sie werden nicht gespeichert. Andererseits hat die JDK -Dienstprogrammklasse die Sammlerklasse, die andere grundlegende Methoden hat. Die Sammlerklasse verfügt. Die Stream Collector -Gruppenelemente, die auf einer Erkrankung basieren, reduzieren die Elemente auf einen einzelnen Wert (wie min, max, zählen oder insgesamt) oder sammeln die Elemente in Sammlungen an. Die Sammlerklasse ist in der Stream -Klasse enthalten, sodass sie nach der Durchführung einer Filter- oder Mapping -Operation in einen Stream aufgerufen werden kann. Es braucht einen Sammler, um die Elemente aus dem Stream zu einer festgelegten Sammlung hinzuzufügen.

Beispiel 1:

Mit der Methode Collect () wird die Liste im folgenden Beispiel generiert. Die Sammlerimplementierung, die eine neue Liste aus den Eingabelementen erstellt, wird von den Sammlern zurückgegeben.Tolist () Methode.

Java importieren.Util.Strom.Sammler;
Java importieren.Util.Aufführen;
Java importieren.Util.Anordnungsliste;
Klassenparfüm
int pid;
String Pname;
schweben pprice;
öffentliches Parfüm (int pid, String pname, float pprice)
Das.PID = PID;
Das.pname = pname;
Das.pprice = pprice;


öffentliche Klassensammler1
public static void main (String [] args)
LISTPERFUMESLIST = new ArrayList ();
Parfumslist.Add (neues Parfüm (1, "Garden of Roses.", 5000f));
Parfumslist.add (neues Parfüm (2, "erdiges Wunderland", 4000f));
Parfumslist.Add (neues Parfüm (3, "Berry Mellow.", 18000f));
LISTPERFUMEPRICELIST =
Parfumslist.Strom()
.Karte (i-> i.pprice)
.Sammlung (Sammler.auflisten());
System.aus.println (parfümsprizelist);

Wir definieren eine "Parfums" -Klasse, in der seine Attribute als "PNAME", "PID" und "PPRICE" deklariert werden. Anschließend nennen wir diese Attribute im Konstruktor der Funktion „Parfums“ als Parameter und geben einen Verweis auf die aktuellen Attribute in dieser Funktion mit dem Schlüsselwort "This". Danach erstellen wir die Hauptklasse „Collector1“ des Programms, in dem das Hauptprogramm dieses Beispiels bereitgestellt wird. Hier setzen wir die Listenschnittstelle für die Klasse „Parfums“, um die Liste in der deklarierten "Parfumeslist" -Variable zu erstellen. Die Liste enthält die verschiedenen Werte für die Parfüm -ID, den Namen und den Preis, die über add () -Funktion hinzugefügt werden. Als Nächst. Danach verwenden wir die MAP () -Methode, um die Preisliste der Parfums zu erhalten. Die Sammlungsklasse wird eingesetzt, die die Sammler nimmt.tolist () sammeln die Preise der Parfumsliste und drucken Sie diese Liste, die nur die Preise enthält.

Die Preisliste der Klasse -Parfums wird mit den Sammlern abgerufen.Tolist () Methode.

Beispiel 2:

Die Java Collector -Klasse bietet unterschiedliche Operationen für die Reduzierung. Die Verbindung zwischen Java Collectors der Java -Sammlerklasse wird verwendet, um die verschiedenen Elemente eines Zeichen- oder String -Arrays zu einem bestimmten Objekt zu kombinieren. Diese Technik erreicht dies über den Stream. Die Kollektorklasse enthält mehrere Überlastungen der Verbindungsmethoden.

Java importieren.Util.Aufführen;
Java importieren.Util.Strom.Sammler;
öffentliche Klassensammler2
public static void main (String [] args)
var myfriends = liste.von ("William", "James", "Noah", "Oliver",
"Lucas", "Liam", "Benjamin");
var joinlist = myfriends.Strom().Sammlung (Sammler.Beitritt (","));
System.aus.printf ("Verbindungsliste: %s", Joinlist);

Wir haben eine variable Erklärung „Myfriends“, die als Liste bezeichnet wird.von () Methode, um eine einfache unveränderliche Implementierung der Listenklasse zu haben. Die Liste wird mit den verschiedenen String -Elementen versehen. Danach deklarieren wir eine "Joinlist". Anschließend ruft die Collect () -Methode die Sammlerverbindung () -Methode auf. Die Sammler.Joining () -Methode verbindet die Liste in Form einer Zeichenfolge mit dem Komma „“, das als Argument übergeben wird. Die zusammengefügte Liste der Zeichenfolge wird dann auf der Konsole gedruckt.

Die Ausgabe, die die angegebene Liste zeigt.Enter () Methode.

Beispiel 3:

Die statische Methode der Sammlerklasse zusammengefasst () gibt die Statistiken der Ergebnisse zurück, die nach einer Reihe von Eingabeträgern erhalten wurden.

Java importieren.Util.Arrays;
Java importieren.Util.IntsummaryStatistics;
Java importieren.Util.Aufführen;
Java importieren.Util.Strom.Sammler;
Java importieren.Util.Strom.Strom;
öffentliche Klassensammler3
öffentliche statische Leere Main (String [] Args)

ListnumList = arrays.ASLIST (13, 25, 18, 18);
System.aus.println ("number ist -" + numlist);
Streamnumstream = numlist.Strom();
IntsummaryStatisticsNumsummary = numstream.Sammlung (Sammler.Zusammenfassung (i -> i));
System.aus.println ("Number -Stream -Zusammenfassung Statistiken -" + numsummary);

Wir deklarieren das Klassenobjekt „Numlist“, in dem die Liste der Ganzzahlen mit der Methode ASList () angegeben ist. Die Liste der Ganzzahlen wird mit der Druckanweisung angezeigt. Danach erstellen wir den Stream dieses List -Arrays, indem wir die Stream () -Methode mit der "Numlist" in der Variablen "Numstream" der Stream -Klasse aufrufen. Als Nächst.

Die statistische Zusammenfassung der vorherigen Array -Liste wird im Folgenden angezeigt. Es gibt die Summe, den Mindestwert, den Maximalwert und den Durchschnittswert aus.

Beispiel 4:

Die Methode von Java's GroupingBy () der Sammlerklasse wird verwendet, um die Elemente nach einem Attribut zu gruppieren und die Daten in einem Kartenobjekt zu speichern. Darüber hinaus können die Gesamtelemente, die als Parameter im Stream angegeben werden. Die Funktion gibt einen Sammler zurück, der die Elemente vom Typ t akzeptiert und die Anzahl der eingehenden Elemente sammelt. Das Ergebnis aus der Methode counting () ist Null, wenn es keine Elemente gibt.

Java importieren.Util.Arrays;
Java importieren.Util.Aufführen;
Java importieren.Util.Karte;
Java importieren.Util.Funktion.Funktion;
Java importieren.Util.Strom.Sammler;
öffentliche Klassensammler4
public static void main (String [] args)
Listen Sie Städte auf =
Arrays.ASLIST ("Phoenix", "Houston",
"New York", "Phoenix", "San Diego", "Houston");
MAPMYMAP =
Städte.Strom().sammeln(
Sammler.gruppingby (
Funktion.Identität (), Sammler.Zählen()));
System.aus.println (MYMAP);

Wir erstellen die Array -Liste mit der ASList () -Methode und fügen die Namen der eindeutigen und wiederholten Städte ein. Diese Liste wird in der Variablen „Städte“ der Listenklasse deklariert. Danach haben wir eine Kartenschnittstelle, die das "MYMAP" -Objekt deklariert. Über diese Kartenschnittstelle erhalten wir den Stream der angegebenen Liste. Anschließend verwenden wir die Collect () -Methode, mit der die Methode Collector Class GroupingBy () weiter verwendet wird. Die Methode gruppingBy () gruppiert die Elemente der Liste, indem sie zuerst mit der Funktion identifiziert werden.Identifizieren () Methode. Anschließend zählt es die Anzahl der angegebenen Elemente mit der Methode counting () der Sammlerklasse. Die gruppierten Elemente nach der Verarbeitung durch die Kollektorklassenmethoden werden von der Druckanweisung angezeigt.

Die folgende Liste ist die Form der Gruppe. Das Element, das in der Liste wiederholt wird, wird mit dem Wert von „2“ gruppiert. Das einzelne Element hat den Wert von „1“.

Beispiel 5:

Die Sammlerklasse enthält eine andere Methodendefinition für das Sammeln und näher (). Die statische Sammlung und die Methode der Sammlerklasse erzeugt zuerst die Ergebnisse des Sammlerbetriebs. Dann wird die andere zusätzliche Endveränderung durchgeführt.

Java importieren.Util.Sammlungen;
Java importieren.Util.Aufführen;
Java importieren.Util.Strom.Sammler;
Java importieren.Util.Strom.Strom;
öffentliche Klassensammler5
public static void main (String [] args)
StreamStreamElements = Stream.von ("eins", "zwei", "drei");
ListSynclist = StreamElements.Sammlung (Sammler.sammeln und (
Sammler.Tolist (), Sammlungen :: Synchronizedlist));
System.aus.println (synclist);


Der Stream der Zeichenfolge ist in der Variablen „StreamElements“ der Stream -Klasse definiert. Anschließend geben wir das Listenobjekt „Synclist“ für die Listensynchronisation an. Die Sammelmethode wird auf den Stream „StreamElements“ angewendet. Die sammel () -Methode umfasst die Sammlung von Collecting und Then (), die mit der Methode Tolist () weiter verwendet wird. Wir benötigen jedoch eine unveränderliche Liste. Daher verwenden wir die modifiAlableset () -Methode in der generierten Liste, um eine unveränderbare Darstellung der Liste zurückzugeben. Dann drucken wir die unerpassbare Liste in die Konsole.

Die vorherige Programmausgabe wird im folgenden Java -Konsolenbild ausgeführt:

Abschluss

Die Java Stream Collect () -Methode wird hauptsächlich verwendet, um die Stream -Elemente zu Sammlungen hinzuzufügen. Die Elemente im Stream werden zu einem veränderbaren Reduktionsverfahren verarbeitet. Sowohl sequentielle als auch gleichzeitige Reduktionsprozesse sind möglich. Im Fall eines parallelen Stroms behandelt es die Synchronisation. Die Sammlerklasse bietet zahlreiche Sammlerimplementierungen an, um uns zu unterstützen. In diesem Artikel werden einige der Methoden aus der Sammlerklasse implementiert.