Maison > Java > javaDidacticiel > Exemple d'analyse du flux de données Stream en Java8

Exemple d'analyse du flux de données Stream en Java8

黄舟
Libérer: 2017-10-16 10:02:26
original
1459 Les gens l'ont consulté

Stream fournit une abstraction de haut niveau pour les opérations et expressions d'ensemble Java d'une manière intuitive, similaire à l'utilisation d'instructions SQL pour interroger les données de la base de données. Ensuite, je partagerai avec vous les connaissances sur le flux de données Stream dans Java8 à travers cet article. Les amis intéressés devraient y jeter un œil ensemble

Stream est une API introduite dans Java8 qui utilise fortement les expressions lambda. Stream fournit une abstraction de haut niveau pour les opérations et expressions d'ensemble Java d'une manière intuitive similaire à l'utilisation d'instructions SQL pour interroger les données d'une base de données. L'intuition signifie que lorsque les développeurs écrivent du code, ils doivent uniquement se concentrer sur le résultat qu'ils souhaitent, plutôt que sur la manière spécifique d'y parvenir. Dans ce chapitre, nous présenterons pourquoi nous avons besoin d'une nouvelle API de traitement de données, les différences entre Collection et Stream et comment appliquer StreamAPI à notre codage.

Filtrer les éléments en double

L'interface Stream prend en charge la méthode distincte, Il renvoie un flux d'éléments (implémenté selon les méthodes hashCode et equals des éléments générés par le flux).

Par exemple, le code suivant filtrera tous les nombres pairs de la liste et garantira qu'il n'y a pas de doublons.


List<Dish> dishes = Dish.menu.stream()
.filter(Dish::isVegetarian)
.collect(Collectors.toList());
Copier après la connexion

Ignorer le nombre spécifié d'éléments

Stream prend en charge la méthode skip(n) , Renvoie un flux avec les n premiers éléments supprimés. S'il y a moins de n éléments dans le flux, un flux vide est renvoyé. limit(n) et skip(n) sont complémentaires


List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2个元素后返回
.collect(Collectors.toList());
dishSkip.forEach(System.out::println);
Copier après la connexion

opération map

Stream prend en charge la méthode map, qui acceptera une fonction comme paramètre. Cette fonction sera appliquée à chaque élément et le mappera dans un nouvel élément


List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());
Copier après la connexion

Somme des éléments


List<Integer> numbers = Arrays.asList(3,4,5,1,2);
int sum1 = numbers.stream().reduce(0,(a, b) -> a + b);
System.out.println(sum1);
int sum2 = numbers.stream().reduce(0,Integer::sum);
System.out.println(sum2);
Copier après la connexion

Valeur maximale


int max = numbers.stream().reduce(0,Integer::max);
System.out.println(max);
Copier après la connexion

Valeur minimale


//reduce不接受初始值,返回一个Optional对象(考虑流中没有任何元素的情况)
Optional<Integer> min = numbers.stream().reduce(Integer::min);
min.ifPresent(System.out::println);
Copier après la connexion

Résumé

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal