Tout ce que vous devez savoir sur Stream en Java



Cet article vous présentera Stream en Java, un package récemment introduit en Java et vous expliquera en détail ce qu'il peut faire.

Un nouveau package supplémentaire dans Java 8, appelé java.util.stream a été ajouté pour les utilisateurs pour une expérience de programmation efficace. Un flux peut être défini comme une séquence d'objets, prenant en charge plusieurs méthodes. Dans cet article, nous explorerions Stream dans

Les pointeurs suivants seront traités dans cet article,





Avant de commencer avec cet article sur Stream In Java, examinons quelques fonctionnalités importantes,

Stream en Java: fonctionnalités

  • Un flux n'est pas une structure de données et ne stocke pas d'éléments. Les collections, les tableaux ou les canaux d'E / S sont l'endroit d'où il prend l'entrée.
  • La source du flux reste inchangée une fois les opérations effectuées. Par exemple, filtrer un flux produit simplement un nouveau flux sans les éléments filtrés, au lieu de modifier le flux d'origine.
  • Les opérations d'agrégation telles que le filtrage, la réduction, la correspondance, la recherche, etc. sont prises en charge par le flux.
  • La paresse peut être considérée comme une caractéristique du flux, car elle évalue les codes uniquement lorsque cela est nécessaire.
  • La visite des éléments présents dans le flux ne peut être effectuée qu'une seule fois pendant la durée de vie d'un flux. Un nouveau flux doit être créé pour revoir les mêmes éléments présents dans la source.

Passez à cet article sur Stream en Java



Générer des flux

Les flux peuvent être générés par les méthodes suivantes:

  • courant() - Un flux séquentiel est renvoyé.Collectionest considérée comme la source.
  • parallelStream () - Un flux parallèle est renvoyé. La collection est considérée comme la source.
List strings = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') Liste filtrée = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Passez à cet article sur Stream en Java

Opérations sur les flux:

Opérations intermédiaires:

carte



Les éléments présents dans la collection peuvent être mappés à d'autres objets en fonction du prédicat passé en argument. L'exemple suivant est utilisé pour afficher des carrés uniques des nombres à l'aide de la méthode map.

Liste num = Arrays.asList (5,4,4,2,3,3) List squares = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

filtre

Les éléments peuvent être supprimés sur la base d'un critère en utilisant cette méthode.

List name = Arrays.asList ('samedi', 'dimanche', 'jeudi') List res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

trié

Le flux peut être trié à l'aide de cette méthode.

List name = Arrays.asList ('samedi', 'dimanche', 'jeudi') List res = name.stream (). Sorted (). Collect (Collectors.toList ())

Flux en Java: opérations du terminal:

collecte

Le résultat du traitement sur les éléments d'un flux peut être combiné en utilisant l'opération de collecte.

Liste num = Arrays.asList (4,3,2,5,6) Set res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

pour chaque

remplacer vs surcharger c ++

Cette méthode est utilisée pour parcourir chaque élément présent dans le flux.

algorithme de tri c ++
Liste num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))

réduire

Les éléments du flux peuvent être réduits à une valeur unique en utilisant cette méthode.

Liste num = Arrays.asList (4,3,2,5) int pair = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + je)

La variable res se voit attribuer initialement la valeur 0 et i lui est ajouté.

Passez à cet article sur Stream en Java

Filtration

Le code peut être filtré à l'aide de la méthode stream. Dans l'exemple suivant, le prix des instruments est filtré.

import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = price}} public class Test {public static void main (String [] args) {List instrumentsList = new ArrayList () // Ajout de produits instrumentsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentsList.add (new Instrument (2, 'Piano', 18000f)) instrumentsList.add (nouvel Instrument (3, 'Flute', 15000f)) instrumentsList.add (nouvel Instrument (4, 'Drums', 48000f)) instrumentsList.add (nouvel Instrument ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // filtrage des données .map (p-> p.price) // récupération du prix .collect ( Collectors.toList ()) // collecte sous forme de liste System.out.println (InstrumentPriceList2)}}
 Production: 

[48000,0, 32000,0]

Passez à cet article sur Stream en Java

Itération:

L'itération peut être effectuée en utilisant stream dans java.

import java.util.stream. * public class Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). limit (6) .forEach (System.out :: println)}}

Production:

4

8

12

16

vingt

24

Prenons un autre exemple pour comprendre plus efficacement le concept de Stream en Java.

Exemple:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// création d'une liste d'entiers List num = Arrays.asList (6,7,8,9 ) // en utilisant la méthode map List squares = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (squares) // création d'une liste de String List days = Arrays.asList ('Friday', 'Saturday', 'Sunday') // méthode de filtrage List res = days .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // méthode triée Affichage de la liste = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (affichage) / / création d'une liste d'entiers List number = Arrays.asList (6,9,5,7,1) // La méthode collect renvoie un ensemble Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // méthode forEach num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / réduire méthode int pair = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (résultat, i) -> résultat + i) System.out.println (pair)}}

Production:

[36, 49, 64, 81]

[Samedi Dimanche]

[Vendredi Samedi Dimanche]

[81, 49, 1, 36, 25]

36

prérequis pour apprendre le machine learning

49

64

81

14

Les flux permettent à l'utilisateur d'effectuer efficacement des opérations sur les éléments.

Nous sommes donc arrivés à la fin de cet article sur «Stream in Java». Si vous souhaitez en savoir plus, consultez la formation Java d'Edureka, une entreprise de formation en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.