[Java] Stream API - Traitement intermédiaire de flux

Traitement intermédiaire de flux

Filtrer les valeurs selon des conditions spécifiées

import java.util.stream.Stream;
public class Main {
  public static void main(String[] args) {
    Stream.of(
      "https://qiita.com/",
      "Neko",
      "CAT",
      "https://www.amazon.co.jp/",
      "https://ja.wikipedia.org/wiki/Neko_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)"
    )
      .filter(s -> s.startsWith("https://"))
      .forEach(System.out::println);
/*
https://qiita.com/
https://www.amazon.co.jp/
https://ja.wikipedia.org/wiki/Neko_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
*/
  }
}

Traiter la valeur donnée

import java.util.stream.Stream;
public class Main {
  public static void main(String[] args) {

    Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
    .map(s -> s.length())
    .forEach(System.out::println); //8 7 7 13 4
  }
}
import java.util.stream.Stream;
public class Main {
  public static void main(String[] args) {
    Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
    .mapToInt(s -> s.length())
    .forEach(System.out::println); //8 7 7 13 4
  }
}

Traiter un élément donné

//Convertir une liste de tableaux à deux dimensions en un tableau à une dimension
import java.util.Arrays;
public class Main {
  public static void main(String[] args) {

    var list = new String[][] {
      { "neko", "nekko", "nekkko" },
      { "inu", "innu" },
      { "tori", "torri" }
    };
    //Passer un tableau imbriqué avec flatMap et Arrays.Diffuser avec la méthode de flux
    //Aplatir en un tableau unidimensionnel en se connectant à flatMap
    Arrays.stream(list)
      .flatMap(v -> Arrays.stream(v))
      .forEach(System.out::println);
     // neko nekko nekkko inu innu tori torri
    }
}
//Extraire l'acronyme lors de l'aplatissement d'un tableau à deux dimensions
import java.util.Arrays;
public class Main {
  public static void main(String[] args) {

    var list = new String[][] {
      { "neko", "nekko", "nekkko" },
      { "inu", "innu" },
      { "tori", "torri" }
    };

    Arrays.stream(list)
    .flatMap(v -> Arrays.stream(v).map(str -> str.substring(0, 1)))
    .forEach(System.out::println);
    //n n n i i t t
    }
}

Trier les éléments

import java.util.stream.Stream;
public class Main {
  public static void main(String[] args) {

    Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
    .sorted()
    .forEach(System.out::println);
// Munchkin
// Persian
// Scottish Fold
// Siamese
// Tama
  }
}
import java.util.stream.Stream;
import java.util.Comparator;

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

    Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
    .sorted((str1, str2) -> str1.length() - str2.length())
    .forEach(System.out::println);
    // Tama
    // Siamese
    // Persian
    // Munchkin
    // Scottish Fold

    /*Ordre inverse du dictionnaire dans l'interface du comparateur
     Stream.of("Munchkin", "Siamese", "Persian", "Scottish Fold", "Tama")
     .sorted(Comparator.reverseOrder())
     .forEach(System.out::println);
    */
  }
}

Extraire le m ~ nième élément

//Utilisez skip pour ignorer 4 éléments et limit pour en extraire 10 éléments.
import java.util.stream.IntStream;
public class StreamLimit {
  public static void main(String[] args) {
    IntStream.range(1, 20)
      .skip(4)
      .limit(10)
      .forEach(System.out::println); //5,6,7,8,9,10,11,12,13,14
  }
}

Supprimer les valeurs du début tout en remplissant les conditions

import java.util.stream.IntStream;
public class StreamDrop {
  public static void main(String[] args) {
    IntStream.of(-2, -5, 0, 3, -1, 2)
      .dropWhile(i -> i < 0)
      .forEach(System.out::println); //0,3,-1,2
  }
}

Extraire uniquement les valeurs qui remplissent les conditions depuis le début

import java.util.stream.IntStream;
public class StreamTake {
  public static void main(String[] args) {
    IntStream.of(-2, -5, 0, 3, -1, 2)
      .takeWhile(i -> i < 0)
      .forEach(System.out::println); //-2,-5
  }
}

Vérifiez le statut intermédiaire du flux

//Contenu du flux de sortie avant et après le tri
import java.util.stream.Stream;
public class StreamPeek {
  public static void main(String[] args) {
    Stream.of("Poisson", "Crasse", "écho", "Kinmokusei")
      .peek(System.out::println)
      .sorted()
      .forEach(System.out::println);
  }
}

Supprimer les valeurs en double

import java.util.stream.Stream;
public class Main {
  public static void main(String[] args) {
    Stream.of("Chat", "Chat", "Nekko", "Chat", "ChatChat")
      .distinct()
      .forEach(System.out::println);
    //Chat
    //Chat
    //Nekko
    //chat Chat
  }
}
import java.util.HashSet;
import java.util.stream.Stream;

public class StreamDistinctObj {

  public static void main(String[] args) {
    var set = new HashSet<String>();
    Stream.of(
        new Person("Yamada", 40),
        new Person("Takano", 30),
        new Person("Okawa", 35),
        new Person("Yamada", 45)
      )
      //Ajouter de la valeur à HashSet dans la méthode de filtrage
      //HashSet.La méthode add renvoie false si la valeur n'a pas pu être ajoutée (dupliquer)

      .filter(p -> set.add(p.name))
      .forEach(System.out::println);
  }
}
public class Person {
  public String name;
  public int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  @Override
  public String toString() {
    return String.format("%s(%d ans)", this.name, this.age);
  }
}

Conversion de flux de base

//Conversion d'IntStream vers DoubleStream
import java.util.stream.IntStream;
public class Main {
  public static void main(String[] args) {
    IntStream.range(1, 5)
      .asDoubleStream()
      .forEach(System.out::println);
      //1.0 2.0 3.0 4.0
  }
}

Conversion mutuelle entre les flux de type de base et de type de référence

//IntStream pour diffuser<Integer>Conversion en
import java.util.stream.IntStream;
public class Main {
  public static void main(String[] args) {
    IntStream.range(1, 5)
      .boxed()
      .forEach(System.out::println);
      //1 2 3 4
      
    IntStream.range(1, 5)
      .mapToObj(Integer::valueOf)
      .forEach(System.out::println);
      //1 2 3 4
  }
}
//Stream<Integer>Convertir en IntStream
import java.util.stream.Stream;
public class StreamUnboxed {
  public static void main(String[] args) {
    Stream.of(1, 2, 3, 4)
      .mapToInt(i -> i) //Unboxing Integer → int
      .forEach(System.out::println); //1 2 3 4
    }
}

Recommended Posts

[Java] Stream API - Traitement intermédiaire de flux
[Java] Opération intermédiaire de l'API Stream
API Java Stream
Traitement intermédiaire de flux
[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
[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)
Exercice Java "Intermédiaire"
[Java] Traitement multi-thread
Terminaison du flux Java
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!
Il n'est pas encore trop tard? Exemple d'utilisation de toutes les méthodes de l'API Java Stream (opération intermédiaire)
À 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