[Java] Stream API - Traitement de l'arrêt du flux

Terminaison de flux

Eléments de processus en séquence

import java.util.stream.Stream;
public class StreamForEach {
  public static void main(String[] args) {
    Stream.of("Munchkin", "Siamese", "Persian", "Tama")
    .forEach(v -> System.out.println(v));
  }
}
import java.util.stream.Stream;
public class Main {
  public static void main(String[] args) {
    Stream.of("Munchkin", "Siamese", "Persian", "Tama")
    .parallel()
    .forEach(v -> System.out.println(v));
    //Persian Tama Siamese Munchkin 
    
    /*Si vous souhaitez conserver la commande
    .forEachOrdered(v -> System.out.println(v)); 
    Munchkin Siamese Persian Tama
    */
  }
}

Obtenez la première valeur

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {

    var str = Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
        .filter(s -> s.startsWith("S"))
        .findFirst();
      //Si la méthode orElse est nulle"-"Remplacer par
      System.out.println(str.orElse("-")); //Siamese
  }
}
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {

    var str = Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
    .parallel()
    .filter(s -> s.startsWith("S"))
    .findAny();
     System.out.println(str.orElse("-")); //Scottish Fold
  }
}

Déterminer si la valeur répond à certaines conditions

//Vérifiez si toutes les valeurs de la liste sont égales ou supérieures à 0
import java.util.stream.IntStream;

public class StreamMatch {

  public static void main(String[] args) {
    System.out.println(
        IntStream.of(1, 10, 5, -5, 12)
          .allMatch(v -> v >= 0)
      ); //false
  }
}

Convertir en tableau / collection

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    var list = Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
        .filter(s -> s.startsWith("S"))
        .toArray();
    System.out.println(list[0]); //Siamese
  }
}
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamTrans2 {

  public static void main(String[] args) {
    var list = Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
        .filter(s -> s.startsWith("S"))
        .collect(Collectors.toList());
    System.out.println(list);
  }
}
//Nommez le tableau d'objets Person:Convertir au format de carte d'adresse e-mail
public class StreamCollectMap {

  public static void main(String[] args) {
    System.out.println(
        Stream.of(
          new Person("Yamada Taro", "[email protected]"),
          new Person("Hanako Suzuki", "[email protected]"),
          new Person("Saburo Inoue", "[email protected]"),
          new Person("Kumi Sato", "[email protected]"),
          new Person("Yamada Taro", "[email protected]")
        ).collect(Collectors.toMap(
          //La clé d'argument représente la clé de la carte
          Person::getName,
          //La valeur de l'argument représente la clé de la carte
          Person::getEmail,
          //Lorsqu'il y a une possibilité de duplication
          (s, a) -> s + "/" + a
          //Écraser la valeur lors de la duplication
          // (s, a) ->  a
        ))
      );
  }
}
public class Person {
  private String name;
  private String email;
  public Person(String name, String email) {
    this.name = name;
    this.email = email;
  }
  public String getName() {
    return name;
  }
  public String getEmail() {
    return email;
  }
}

Trouvez le maximum et le minimum

import java.util.Comparator;
import java.util.stream.Stream;

public class StreamMin {

  public static void main(String[] args) {
    var str = Stream.of("Mebaru", "Sanma", "Inspiration", "Iwashi", "Hokke")
        .min(Comparator.naturalOrder());
      System.out.println(str.orElse("")); //Iwashi
  }
}

Trouvez le nombre d'éléments

//Trouvez le nombre de chaînes supérieur à la longueur de la chaîne 3.
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    System.out.println(
    Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
      .filter(s -> s.length() > 7)
      .count() //2
    );
  }
}

Trouvez la valeur totale / moyenne

//Somme du tableau int, moyenne
import java.util.stream.IntStream;

public class StreamSum {

  public static void main(String[] args) {
    var list = new int[] { 5, 1, 10, -3 };
    System.out.println(IntStream.of(list).sum()); //13
    System.out.println(IntStream.of(list).average().orElse(0)); //3.25
  }
}

Combinez les valeurs de flux en une seule

Avec un argument:

//Grouper les flux de chaînes séparés par des virgules
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {

    System.out.println(
      Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
        .sorted()
        .reduce((result, str) -> {
          return result + "," + str;
        })
        .orElse("") //Munchkin,Persian,Scottish Fold,Siamese,Tama
    );
  }
}

Avec 2 arguments:

import java.util.stream.Stream;
public class StreamReduce2 {
  public static void main(String[] args) {
    System.out.println(
      Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
        .sorted()
        // .parallel()
        .reduce("Himalayan", (result, str) -> {
          return result + "," + str;
        })
    ); //Himalayan,Munchkin,Persian,Scottish Fold,Siamese,Tama
  }
}

Avec 3 arguments:

import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    System.out.println(
      Stream.of("153", "211", "112", "350", "418", "208")
        .parallel()
        .reduce(0,
          //Obtenez des éléments individuels
          //Le résultat de l'opération est stocké dans result et value reçoit chaque élément.
          (result, value) -> {
            return result + Integer.parseInt(value); //Convertir la valeur de la chaîne en nombre
          },
          //Résumer les résultats distribués(Flux parallèle uniquement)
          (result1, result2) -> {
            return result1 + result2; //1452
          }
      )
    );
  }
}

Collecter des éléments de flux dans une collection (1)

//Trier un flux de chaînes donné et le convertir en liste
import java.util.ArrayList;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    System.out.println(
      Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama"
        .sorted()
        .collect(
          //Création d'un conteneur qui stocke la valeur dans la première valeur de réduction par le nombre d'expressions
          ArrayList<String>::new,
          //Les arguments sont des conteneurs, des éléments individuels
          (list, str) -> list.add(str),
          //Pour les flux parallèles
          (list1, list2) -> list1.addAll(list2)
        )
    );
  }
}

Collecter des éléments de flux dans une collection (2)

import java.util.ArrayList;
//import java.util.Arrays;
import java.util.stream.Collector;
import java.util.stream.Stream;

public class Main {
  public static void main(String[] args) {
    System.out.println(
      Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
        .sorted()
        .collect(
          Collector.of(
            ArrayList::new,
            ArrayList::add,
            (list1, list2) -> {
              list1.addAll(list2);
              return list1;
            },
            Collector.Characteristics.IDENTITY_FINISH
          )
        )
    );
  }
}

Collecteur standard

** méthode de jonction **

import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

  public static void main(String[] args) {
    System.out.println(
        Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
          .sorted()
          .collect(Collectors.joining(",", "<", ">")) //<Munchkin,Persian,Scottish Fold,Siamese,Tama>
      );
  }
}

** méthode groupingBy **

//Catégoriser les chaînes par longueur
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

  public static void main(String[] args) {
    System.out.println(
        Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
          .sorted()
          .collect(
          //Recevoir le type d'élément avec l'argument str et générer la clé de regroupement
          //Grouper par chaîne
            Collectors.groupingBy(str -> str.length()
          )) //{4=[Tama], 7=[Persian, Siamese], 8=[Munchkin], 13=[Scottish Fold]}
      );
  }
}
public class Main {

  public static void main(String[] args) {
      
    System.out.println(
        Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
          .sorted()
          .collect(
            Collectors.groupingBy(
              str -> str.length(),
              Collectors.joining("/") //{4=Tama, 7=Persian/Siamese, 8=Munchkin, 13=Scottish Fold}
          ))
      );
  }
}

** méthode partitioningBy **

//Séparez selon que la chaîne de caractères est de 7 caractères ou moins ou longue
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

  public static void main(String[] args) {
      
    System.out.println(
        Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
          .sorted()
          .collect(
            Collectors.partitioningBy(
              str -> str.length() > 7
          ) //{false=[Persian, Siamese, Tama], true=[Munchkin, Scottish Fold]}
        )
      );
  }
}

** Méthode de collecteAndThen **

//Répertorier les flux avec la méthode toList
//Collections::Convertir en lecture seule avec unmodifiableList

import java.util.Collections;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

  public static void main(String[] args) {
    System.out.println(
        Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
          .sorted()
          .collect(
            Collectors.collectingAndThen(
              Collectors.toList(),
              Collections::unmodifiableList
            )
          )
      );
  }
}

** Classe IntSummaryStatistics **

import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;

public class Main {

  public static void main(String[] args) {
    var summary = IntStream.of(5, 13, 7, 2, 30)
      .collect(
     //Passer une référence au sod parseInt dans le constructeur, accepter, combinerDB
        IntSummaryStatistics::new,
        IntSummaryStatistics::accept,
        IntSummaryStatistics::combine
      );
    System.out.println(summary.getMin()); //2
    System.out.println(summary.getSum()); //57
    System.out.println(summary.getAverage()); //11.4
  }
}

Recommended Posts

[Java] Stream API - Traitement de l'arrêt du flux
[Java] Stream API - Traitement intermédiaire de flux
API Java Stream
Terminaison du flux Java
[Java] Traitement de flux
Traitement des données à l'aide de l'API de flux de Java 8
[Java] API / carte de flux
Aide-mémoire de l'API Java Stream
[Java] Introduction à l'API Stream
[Java] Opération intermédiaire de l'API Stream
Processus de terminaison de flux
[java8] Pour comprendre l'API Stream
[Introduction à Java] À propos de l'API Stream
J'ai essayé d'utiliser l'API Java8 Stream
Flux de traitement de base de Java Stream
Java 8 ~ Stream API ~ pour commencer maintenant
Essayez d'utiliser l'API Stream en Java
Essayez Java 8 Stream
De nos jours, les expressions Java Lambda et l'API de flux
Traitement des threads Java
Essayez différentes méthodes d'API Java Stream (maintenant)
Traitement des chaînes Java
Étudier Java 8 (Stream)
[Java] Traitement multi-thread
Traitement intermédiaire de flux
Principes de base de l'API Stream
Java 9 Facultatif :: stream
traitement itératif java
[Java] Remarque sur les collecteurs de flux
Emballez la réponse de l'API (java)
[Java] Génération de flux API-Stream
API Stream (classe Collectors)
Méthode de mappage de l'API Stream
Dépannage de l'API Java Docker-Client
API Zabbix en Java
À propos de l'opération de réduction du flux Java8
Traitement des appels du constructeur JAVA
Java aléatoire, divers traitements
Résumé approximatif du flux Java8
Traitement des listes à comprendre avec des images - java8 stream / javaslang-
[Session d'étude interne] Principes de base de l'expression Java-Lambda et de l'API Stream- (13/07/2017)
[Pour les débutants] Comment utiliser Stream API après Java 8
Utiliser des expressions Java lambda en dehors de l'API Stream
Le traitement Java 8 Stream peut être omis jusqu'à présent!
À propos de l'implémentation du traitement de fusion, y compris la fonction de tri de l'API Stream
[Java11] Résumé du flux -Avantages du flux-
[À voir absolument pour l'apprenti ingénieur Java] Comment utiliser l'API Stream
Gérez les exceptions avec fraîcheur avec les expressions lambda Java 8 et l'API Stream
[Java] Méthode d'implémentation du traitement du minuteur
Java Stream ne peut pas être réutilisé.
Traitement parallèle mesuré avec Java
Traitement des listes à comprendre avec des images --java8 stream / javaslang --bonus
Comprendre le traitement parallèle Java (Introduction)
[Java11] Résumé de l'utilisation du flux -Basics-
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream
Contenu d'apprentissage de base Java 8 (API Java)
Application Java pour les débutants: stream
Résumé du traitement des erreurs Java