Maison  >  Article  >  Java  >  Comment utiliser la fonction Stream en Java pour les opérations de flux

Comment utiliser la fonction Stream en Java pour les opérations de flux

PHPz
PHPzoriginal
2023-06-26 14:10:111340parcourir

La fonction Stream en Java est une nouvelle fonctionnalité introduite dans Java 8. Elle offre une toute nouvelle façon de gérer les ensembles de données tels que les collections et les tableaux. Stream fournit une méthode de programmation fonctionnelle pour effectuer des opérations de flux et simplifie également grandement l'écriture de code. Dans cet article, nous explorerons comment effectuer des opérations de streaming à l'aide de la fonction Stream en Java.

1. Qu'est-ce que la fonction Stream ?

La fonction Stream est une nouvelle fonctionnalité introduite dans Java 8. Il nous fournit un moyen de programmation fonctionnel pour effectuer des opérations de flux afin de simplifier notre code. La fonction Stream peut être utilisée pour faire fonctionner des éléments dans des structures de données telles que des collections et des tableaux afin d'obtenir les fonctions dont nous avons besoin.

La fonction Stream dispose de deux modes de fonctionnement, à savoir le fonctionnement intermédiaire et le fonctionnement de terminaison. Les opérations intermédiaires peuvent être effectuées plusieurs fois, tandis que les opérations de terminaison arrêteront le traitement du flux et renverront un résultat ou un effet secondaire. Dans le même temps, Stream a également la capacité de traitement parallèle.

2. Utilisez la fonction Stream pour les opérations de flux

  1. Créez un Stream

Nous pouvons obtenir l'objet stream via la méthode stream() de la collection ou la méthode Stream.of() du tableau. Par exemple :

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream(); // 通过list对象获取stream对象
Stream<Integer> stream2 = Stream.of(1, 2, 3); // 通过Stream.of()方法获取stream对象
  1. Opérations intermédiaires

Stream fournit de nombreuses méthodes d'opération intermédiaires, qui peuvent effectuer du filtrage, du mappage, du découpage et d'autres opérations. Jetons un coup d'œil à ces méthodes de fonctionnement une par une :

(1) méthode filter() : éléments de filtre

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Stream<Integer> stream = list.stream();
stream.filter(i -> i%2 == 0).forEach(System.out::println); // 输出2和4

(2) méthode map() : éléments de la carte

List<String> list = Arrays.asList("Java", "Python", "Ruby");
Stream<String> stream = list.stream();
stream.map(String::toLowerCase).forEach(System.out::println); // 输出java, python, ruby

(3) méthode flatMap() : aplatir le flow

List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<List<Integer>> stream = list.stream();
stream.flatMap(Collection::stream).forEach(System.out::println); // 输出1, 2, 3, 4, 5, 6

(4) méthode distinct() : supprimer les doublons

List<Integer> list = Arrays.asList(1, 2, 3, 1, 2, 3);
Stream<Integer> stream = list.stream();
stream.distinct().forEach(System.out::println); // 输出1, 2, 3

(5) méthode sorted() : sort

List<Integer> list = Arrays.asList(3, 2, 1);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println); // 输出1, 2, 3

(6) méthode limit() : limiter le nombre d'éléments

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.limit(3).forEach(System.out::println); // 输出1, 2, 3

(7) skip( ) : ignorer l'élément

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.skip(2).forEach(System.out::println); // 输出3, 4, 5

(8) méthode peek() : ajouter l'élément

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream();
Stream<Integer> stream2 = stream1.peek(System.out::println);
stream2.count(); // 输出1, 2, 3
  1. Opération de terminaison

Stream fournit de nombreuses méthodes d'opération de terminaison, qui peuvent renvoyer les résultats du traitement du flux. Jetons un coup d'œil à ces méthodes de fonctionnement une par une :

(1) méthode forEach() : itérer les éléments dans le flux

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println); // 输出1, 2, 3

(2) méthode count() : compter le nombre d'éléments

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.count(); // 输出3

(3) Méthode toArray() : Convertir les éléments du flux en tableau

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
Object[] array = stream.toArray();
System.out.println(Arrays.toString(array)); // 输出[1, 2, 3]

(4) Méthode réduire() : Réduire les éléments du flux

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
int result = stream.reduce(0, (x, y) -> x + y);
System.out.println(result); // 输出6

(5) Méthode collect() : Collecter les éléments du flux

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
List<Integer> newList = stream.collect(Collectors.toList());
System.out.println(newList); // 输出[1, 2, 3]
  1. Opération de flux parallèle

La fonction Stream fournit également la fonction de fonctionnement de flux parallèle, et le flux peut être converti en flux parallèle via la méthode parallèle(). Les flux parallèles peuvent exploiter pleinement la puissance de traitement des processeurs multicœurs et améliorer l'efficacité d'exécution des programmes. Par exemple :

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.parallelStream();
stream.forEach(System.out::println); // 输出1, 2, 3, 4, 5

3. Résumé

La fonction Stream est une nouvelle fonctionnalité de Java 8, qui offre une nouvelle façon de gérer les ensembles de données tels que les collections et les tableaux. Grâce aux opérations intermédiaires et aux opérations de terminaison de la fonction Stream, nous pouvons facilement filtrer, mapper, dédupliquer, trier, limiter le nombre d'éléments, ignorer des éléments, ajouter des éléments et d'autres opérations. Dans le même temps, grâce aux opérations de flux parallèles, nous pouvons utiliser pleinement la puissance de traitement des processeurs multicœurs et améliorer l'efficacité de fonctionnement du programme. L'introduction ci-dessus ne représente qu'une partie des fonctions de la fonction Stream. Une logique métier complexe doit être implémentée en appliquant diverses méthodes de fonctionnement de la fonction Stream.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn