Die Max-Funktion von Stream identifiziert bequem den Maximalwert innerhalb eines Streams. Allerdings gilt das Prinzip „Wer zuerst kommt, mahlt zuerst“, sodass bei Gleichstand möglicherweise andere Höchstwerte weggelassen werden. Um diese Einschränkung zu beheben und alle Maximalwerte abzurufen, sind alternative Ansätze erforderlich.
Für Eingabesammlungen kann ein Zwei-Pass-Ansatz verwendet werden:
Diese Lösung berücksichtigt mehrere Maximalwerte, verursacht jedoch die Kosten für die zweimalige Iteration über die gesamte Eingabe.
Wenn die Eingabe a ist Stream kann ein Single-Pass-Kollektor verwendet werden:
Dieser Kollektor behält die Invariante der Äquivalenz bei und fügt Elemente hinzu oder entfernt sie notwendig. Beim Zusammenführen von Listen wird das maximale Element jeder Liste berücksichtigt und bei Gleichheit kombiniert.
Durch die Kombination dieses Kollektors mit dem Stream können alle Maximalwerte in einem einzigen Durchgang erhalten werden.
Während Max in Java-Streams seine Grenzen hat, können alternative Lösungen genutzt werden, um diese zu überwinden. Eine Zwei-Durchgangs-Lösung ist für Sammlungen effizient, während sich der Einzeldurchgangs-Kollektor für Streams als nützlich erweist und den Abruf aller Maximalwerte ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich alle Maximalwerte aus einem Java-Stream abrufen und Bindungen effektiv handhaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!