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
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对象
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
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]
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!