Heim >Java >javaLernprogramm >Wann sollte toMap() anstelle von GroupingBy und Reducing in Java-Streams verwendet werden?
Bei der Arbeit mit Java Streams sehen sich Entwickler häufig mit Situationen konfrontiert, in denen sie sowohl die Methode groupingBy() als auch die Methode reducing verwenden ()-Kollektor, um ihre Daten zu manipulieren. In bestimmten Fällen gibt es jedoch einen effizienteren Ansatz mit der toMap()-Methode.
Was ist das Muster?
Wie von @Holger bereits erwähnt Bei der Diskussion wurde festgestellt, dass es bei der Verwendung des reduzierenden Kollektors mit groupingBy häufig sinnvoller ist, stattdessen den toMap-Kollektor zu verwenden. Dieses Muster wird durch Erfahrungen und Beobachtungen aus zahlreichen Stackoverflow-Diskussionen deutlich.
Warum toMap() bevorzugt wird
Der GroupingBy-Collector erwartet einen zweiten Collector als Argument und macht ihn so Geeignet für die Anwendung der veränderlichen Reduktion auf Datengruppen. Im Gegensatz dazu ist der toMap-Kollektor mit Merge-Funktion ideal für die klassische Reduktion. Die Zusammenführungsfunktion in toMap hat einen ähnlichen Zweck und eine ähnliche Form wie eine Reduktionsfunktion, auch wenn sie nicht als solche gekennzeichnet ist.
In der Praxis geben die Kollektoren, die eine Reduktion durchführen, ein Optional zurück, was bei der Verwendung nicht immer wünschenswert ist gruppierungBy. Hier kommt toMap ins Spiel, da es solche Fälle nahtloser behandelt.
Zusätzliche Muster
Während dieses spezifische Muster identifiziert wurde, werden wahrscheinlich noch weitere Muster hinzukommen Dies ist bei der Verwendung dieser APIs offensichtlich. Sie alle in einer einzigen Antwort zusammenzufassen, liegt jedoch außerhalb des Rahmens von Stackoverflow. Entwickler werden ermutigt, diese APIs weiter zu erkunden und ihre Erfahrungen auszutauschen, um weitere Muster und Best Practices zu entdecken.
Das obige ist der detaillierte Inhalt vonWann sollte toMap() anstelle von GroupingBy und Reducing in Java-Streams verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!