[Java] Utilisez Collectors.collectingAndThen

Qu'est-ce que Collectors.collectingAndThen?

Un «Collector» qui renvoie la valeur traitée après le «Collect».

Comment utiliser

Supposons que vous ayez la situation suivante:

Stocker temporairement dans la liste → processus d'appel


List<Integer> mappedList = /* Stream */
    ./*Traitement de flux tel que la carte*/
    .collect(Collectors.toList());

return hogeFunc(mappedList);

Un tel traitement peut être écrit comme suit en utilisant Collectors.collectingAndThen.

Collectors.Formulaire utilisant la collecteAndThen


return /* Stream */
  ./*Traitement de flux tel que la carte*/
  .collect(
      Collectors.collectingAndThen(
          Collectors.toList(),
          mappedList -> hogeFunc(mappedList) //Traitement à l'aide de mappedList
      )
  );

De quoi êtes-vous heureux?

Les variables temporaires diminuent

Puisqu'il n'est pas nécessaire de stocker les résultats de collecte dans des variables temporaires une par une, le nombre de variables temporaires peut être réduit. Mettre une variable temporaire conduit à une mauvaise lisibilité et une mauvaise qualité du code, je suis donc heureux de la réduire.

La lisibilité est supérieure à la livraison directe

L'exemple de code donné au début peut aussi s'écrire:

Lorsqu'il est écrit sous la forme de passer des arguments directement à la fonction


return hogeFunc(
    /* Stream */
        ./*Traitement de flux tel que la carte*/
        .collect(Collectors.toList())
);

Cependant, il s'agit de [^ hosoku], qui est moins lisible, surtout lorsque les fonctions sont imbriquées. De plus, cela présente l'inconvénient de ne pas pouvoir être lu en le raccordant à un débogueur.

[^ hosoku]: Pour cette scène, si vous avez un opérateur de pipeline, vous n'avez même pas besoin d'utiliser Collectors.collectingAndThen ...

Résumé

Utilisons Collectors.collectingAndThen.

Recommended Posts

[Java] Utilisez Collectors.collectingAndThen
Utiliser OpenCV avec Java
Utiliser PreparedStatement en Java
[Java] Comment utiliser Map
Comment utiliser java Facultatif
Comment utiliser la classe Java
[Java] Comment utiliser removeAll ()
Comment utiliser Java Map
Java
[Java] Utilisez correctement Big Decimal ~ 2018 ~
[java] Raisons d'utiliser statique
Comment utiliser les variables Java
Application Java CICS-Run - (5) Utiliser JCICSX
Java
Utiliser SpatiaLite avec Java / JDBC
Comment utiliser HttpClient de Java (Get)
Utiliser java avec MSYS et Cygwin
Utiliser Microsoft Graph avec Java standard
Comment utiliser HttpClient de Java (Post)
[Java] Comment utiliser la méthode de jointure
Utilisons Twilio en Java! (Introduction)
Utiliser Azure Bing SpellCheck avec Java
Utilisez JDBC avec Java et Scala.
[Java] N'utilisez pas "+" dans append!
Utilisez des clés composites dans Java Maps.
[Traitement × Java] Comment utiliser les variables
Utiliser Java 11 avec Google Cloud Functions
java (utilisez le type de classe pour le champ)
Utiliser Chrome Headless de Selenium / Java
[JavaFX] [Java8] Comment utiliser GridPane
Comment utiliser les méthodes de classe [Java]
[Java] Comment utiliser List [ArrayList]
[Traitement × Java] Comment utiliser les tableaux
Comment utiliser les expressions Java lambda
Utilisez-vous Stream en Java?
[Java] Comment utiliser la classe Math
Comment utiliser le type enum Java
Apprendre Java (0)
Utilisez before_action! !!
Étudier Java ―― 3
[Java] tableau
Java protégé
[Java] Annotation
Module [Java]
Tableau Java
Étudier Java ―― 9
Java scratch scratch
Astuces Java, astuces
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Utilisez OpenCV_Contrib (ArUco) avec Java! (Partie 2-Programmation)
Méthodes Java
Méthode Java
java (constructeur)
Tableau Java
[Java] Comment utiliser la classe File