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

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

黄舟
黄舟original
2017-10-16 10:02:261416parcourir

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());

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);

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());

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);

Valeur maximale


int max = numbers.stream().reduce(0,Integer::max);
System.out.println(max);

Valeur minimale


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

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!

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