[Java] Stream (filtrer, mapper, forEach, réduire)

Aperçu

On m'a dit «Ecrivez en flux!» Et je n'en ai pas compris le fond, alors je vais le résumer.

Ce que j'ai trouvé

--stream Très pratique.

filter: conditions de filtrage

List<String> tanakaList = 
    list.stream
        .filter(item -> item.getName.equals("Tanaka"))
        .collect(Collectors.toList());
<Bonne chose à utiliser>

--Il y a peu de nids.

(Depuis que j'ai pris le nombre de lignes avec list.add (), je suis vraiment content qu'il ait disparu ...)

<Ce qui m'intéressait>

map: conversion de valeur

List<String> nameList = list.stream
                            .map(item -> item.getName)
                            .collect(Collectors.toList());
<Bonne chose à utiliser>

--Il y a peu de nids.

forEach: traitement en boucle

    list.stream
        .filter(item -> !item.getName.equals("Tanaka"))
        .forEach({
            item -> throw new Exception(
                "don't tanaka exception."
            )
        });
<Bonne chose à utiliser>

--Il y a peu de nids. --for (String tanaka: list) Vous n'avez même pas besoin de l'écrire. ――Il est facile de voir ce qu'il faut faire dans ce cas.

réduire: éléments agrégés

    int total = list.stream()
                    .reduce((base, value) -> {
                        return base + value;
                    });

Contenu de la liste

List<int> list = Lists.newArrayList();

        list.add(1);
        list.add(2);
        list.add(3);

Ce que je n'ai pas compris

1: Pourquoi puis-je utiliser une méthode comme "item.getName"? -> Il existe une classe modèle "Student" dont le nom est obtenu à partir de SQL. Si la liste est définie par "List list", Puisque la liste est décomposée par Stream et placée dans item, Vous pouvez voir que le type d'élément est "Etudiant". Vous pouvez donc utiliser les méthodes qui existent dans la classe Student! !! Étant donné que la méthode getName renvoie une chaîne, il n'y a aucun problème avec la valeur de retour.

Classe d'étudiants

@Data
@Builder
class Student {
    private String name;
}

Stream.java

  List<Student> list = Lists.newArrayList();

  List<String> tanakaList = list.stream
                                .map(item -> item.getName.equals())
                                .collect(Collectors.toList())

Résumé

Je n'étais pas habitué à lambda et stream était en mauvais état, mais c'était bien car la quantité de code était extrêmement réduite lorsque j'essayais de l'utiliser. Le plus grand mérite est que la profondeur de nidification a été éliminée à la fois. Une fois que j'ai su que c'était si pratique, j'ai pensé que je ne l'utiliserais pas comme si j'étais obsédé par cela à l'avenir. Alors j'ai pensé que j'aurais peur s'il y avait des inconvénients que je ne connaissais pas encore. (Mais je pense que je vais l'utiliser pendant un moment, merci de me le dire ...)

Recommended Posts

[Java] Stream (filtrer, mapper, forEach, réduire)
[Java] API / carte de flux
JAVA (Carte)
Conversion de liste Java8 avec Stream map
[Java] Filtre de servlet
Essayez Java 8 Stream
API Java Stream
[Java] méthode forEach
[Java] Comparaison de cartes
Étudier Java 8 (Stream)
Terminaison du flux Java
[Java] Traitement de flux
Java 9 Facultatif :: stream
[Java] Filtrer les traces de pile
[Java] Remarque sur les collecteurs de flux
[Java] Créer un filtre
[Java] Génération de flux API-Stream
Méthode de mappage de l'API Stream
Enum Reverse Map Java
Pratique de l'API Java8 Stream
À propos de l'opération de réduction du flux Java8
Bibliothèque de cartes bidirectionnelles Java
Résumé approximatif du flux Java8
[Java] Comment utiliser Map
[Java11] Résumé du flux -Avantages du flux-
Aide-mémoire de l'API Java Stream
API Java Stream en 5 minutes
Flux Java8, résumé de l'expression lambda
Utilisez un filtre et une carte rapides
Comment utiliser Java Map
[Java] Stream API - Traitement de l'arrêt du flux
[Java] Stream API - Traitement intermédiaire de flux
Java Stream ne peut pas être réutilisé.
[Java] Introduction à l'API Stream
[Java11] Résumé de l'utilisation du flux -Basics-
Application Java pour les débutants: stream
[Java] Opération intermédiaire de l'API Stream