[Java] Verwenden Sie Collectors.collectingAndThen

Was ist Collectors.collectingAndThen?

Ein "Collector", der den verarbeiteten Wert nach dem "Collect" zurückgibt.

Wie benutzt man

Angenommen, Sie haben die folgende Situation:

Vorübergehend in Liste speichern → Aufrufvorgang


List<Integer> mappedList = /* Stream */
    ./*Stream-Verarbeitung wie Karte*/
    .collect(Collectors.toList());

return hogeFunc(mappedList);

Eine solche Verarbeitung kann wie folgt unter Verwendung von "Collectors.collectingAndThen" geschrieben werden.

Collectors.Formular mit collectAndThen


return /* Stream */
  ./*Stream-Verarbeitung wie Karte*/
  .collect(
      Collectors.collectingAndThen(
          Collectors.toList(),
          mappedList -> hogeFunc(mappedList) //Verarbeitung mit mappedList
      )
  );

Worüber freust du dich?

Temporäre Variablen nehmen ab

Da es nicht erforderlich ist, die Collect-Ergebnisse einzeln in temporären Variablen zu speichern, kann die Anzahl der temporären Variablen reduziert werden. Das Einfügen einer temporären Variablen führt zu einer schlechten Lesbarkeit und Codequalität. Daher bin ich froh, diese zu reduzieren.

Die Lesbarkeit ist höher als bei der direkten Lieferung

Das am Anfang angegebene Codebeispiel kann auch wie folgt geschrieben werden:

Wenn in Form der Übergabe von Argumenten direkt an die Funktion geschrieben


return hogeFunc(
    /* Stream */
        ./*Stream-Verarbeitung wie Karte*/
        .collect(Collectors.toList())
);

Dies ist jedoch [^ hosoku], das weniger lesbar ist, insbesondere wenn Funktionen verschachtelt sind. Dies hat außerdem den Nachteil, dass es nicht gelesen werden kann, indem es mit einem Debugger verbunden wird.

[^ hosoku]: Wenn Sie für diese Szene einen Pipeline-Operator haben, müssen Sie nicht einmal Collectors.collectingAndThen verwenden ...

Zusammenfassung

Verwenden wir "Collectors.collectingAndThen".

Recommended Posts

[Java] Verwenden Sie Collectors.collectingAndThen
Verwenden Sie OpenCV mit Java
Verwenden Sie PreparedStatement in Java
[Java] Verwendung von Map
Verwendung von Java Optional
Verwendung der Java-Klasse
[Java] Verwendung von removeAll ()
Verwendung von Java Map
Java
[Java] Big Decimal richtig verwenden ~ 2018 ~
[Java] Gründe für die Verwendung von statischen
Verwendung von Java-Variablen
CICS-Java-Anwendung ausführen- (5) Verwenden Sie JCICSX
Java
Verwenden Sie SpatiaLite mit Java / JDBC
Verwendung von HttpClient (Get) von Java
Verwenden Sie Java mit MSYS und Cygwin
Verwenden Sie Microsoft Graph mit Standard-Java
Verwendung von HttpClient (Post) von Java
[Java] Verwendung der Join-Methode
Verwenden wir Twilio in Java! (Einführung)
Verwenden Sie Azure Bing SpellCheck mit Java
Verwenden Sie JDBC mit Java und Scala.
[Java] Verwenden Sie nicht "+" im Anhang!
Verwenden Sie zusammengesetzte Schlüssel in Java Maps.
[Verarbeitung × Java] Verwendung von Variablen
Verwenden Sie Java 11 mit Google Cloud-Funktionen
Java (Klassentyp für Feld verwenden)
Verwenden Sie Chrome Headless von Selenium / Java
[JavaFX] [Java8] Verwendung von GridPane
Verwendung von Klassenmethoden [Java]
[Java] Verwendung von List [ArrayList]
[Verarbeitung × Java] Verwendung von Arrays
Verwendung von Java-Lambda-Ausdrücken
Verwenden Sie Stream in Java?
[Java] Verwendung der Math-Klasse
Verwendung des Java-Aufzählungstyps
Java lernen (0)
Verwenden Sie before_action! !!
Java studieren ―― 3
[Java] -Array
Java geschützt
[Java] Anmerkung
[Java] Modul
Java-Array
Java studieren ―― 9
Java Scratch Scratch
Java-Tipps, Tipps
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 2-Programmierung)
Java-Methoden
Java-Methode
Java (Konstruktor)
Java-Array
[Java] Verwendung der File-Klasse