Maison  >  Article  >  Java  >  Flux de collecte Java

Flux de collecte Java

王林
王林original
2024-08-30 15:47:35551parcourir

Un flux Java est l'un des composants de la collection et c'est l'API pour itérer ses éléments en interne et c'est-à-dire qu'il peut itérer ses propres éléments si nous voulons utiliser les fonctionnalités d'itération des collections Java, comme un itérateur Java ou Java boucle for-each avec une interface itérable Java, il doit être implémenté l'itération de l'élément, les flux ne changent pas la valeur dans la mémoire de la structure de données et il fournira les résultats en utilisant des méthodes par défaut pour lesquelles nous pouvons allouer l'espace par défaut comme une structure pipeline produire les résultats souhaités.

Guide du flux de collecte Java

Premier, c'est probablement et le plus argument en faveur de l'introduction d'une méthode stream dans l'interface de collection. Une fois la liste des éléments affichée, les données du flux seront ouvertes avec un flux spécifique. L'action la plus simple et la plus populaire est la boucle forEach(), qui parcourt les éléments du flux et appelle la fonction donnée sur chacun d'eux. Cette méthode doit également être largement utilisée et elle a été incluse dans les classes Iterable, Map et autres. Les flux ne sont rien de plus que des wrappers de données, ils ne veulent pas stocker les données ni affecter la source de données sous-jacente. De nombreuses opérations utiles et performantes sont prises en charge par les flux, qui sont décrits succinctement avec des lambdas qui peuvent être effectués séquentiellement ou en parallèle. Un flux n'est pas une structure de données car il ne stocke aucune donnée. Il n’apporte également aucune modification à la source de données sous-jacente. Peu importe que nos données soient traitées séquentiellement ou non, si les données sont ordonnées en parallèle avec notre Stream ; l'implémentation conservera l'ordre de rencontre du Stream. Généralement, le flux est thread-safe si le Spliterator utilisé possède la propriété CONCURRENT. L'API de flux définit un certain nombre de contrats pour chaque étape du pipeline, et si l'un d'entre eux est rompu, un comportement inattendu ou des exceptions peuvent survenir.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Instance de flux à partir d'une instance de collection

Les Streams prennent l'entrée des collections, des tableaux et d'autres canaux d'entrée/sortie. Ce sont les moyens de transmettre l'entrée à la fonction. À l'aide d'une nouvelle procédure de création d'objet, l'objet sera créé et attribué à l'appel de fonction spécifique. De plus, les Streams n'ont fourni que les résultats de sortie selon l'architecture pipeline et ses méthodes, cela ne changera pas la valeur et le processus réel de structure des données. De plus, les collections sont principalement itérées à l'aide de boucles autres et externes, mais lorsque nous utilisons pour diffuser, elles devront être itérées en interne à l'aide d'opérations de boucle spécifiques, la plupart du temps, elles n'ont pas besoin de boucles externes. L'une des méthodes de terminal de l'API Stream dans Java 8 est la méthode collect() pour collecter les données. Il nous permet d'effectuer des opérations de pliage mutables en utilisant des composants de données contenus dans une instance Stream (par exemple, reconditionner des éléments dans des structures de données et appliquer une logique supplémentaire, les concaténer, etc.). Dans la classe Collectors, vous trouverez toutes les implémentations prédéfinies. Pour bénéficier d’une meilleure lisibilité, il est courant d’utiliser l’import statique suivant. Pour regrouper tous les éléments Stream dans un objet List, utilisez le collecteur toList. La chose cruciale à savoir est qu’avec cette technique, nous ne pouvons présumer aucune implémentation certaine de List. Nous pouvons utiliser toCollection à la place si nous voulons un meilleur contrôle sur cela. Pour regrouper tous les éléments Stream dans une instance Set, utilisez le collecteur toSet. Il est essentiel de réaliser qu’en utilisant cette méthode, nous ne pouvons présumer aucune implémentation certaine de Set. Nous pouvons utiliser une collection à la place si nous voulons un meilleur contrôle sur cela. Il n'y a pas d'éléments en double dans un ensemble. Si notre collection contient des composants identiques, ils n'apparaîtront qu'une seule fois dans le Set final. Pour regrouper des éléments Stream dans une instance Map, utilisez le collecteur toMap. Pour ce faire, nous aurons besoin de deux fonctions : keyMapper et valueMapper. Pour extraire une clé Map d'un élément Stream, nous utiliserons keyMapper, et pour récupérer une valeur associée à une clé spécifique, nous utiliserons valueMapper.

Création de flux Java

En Java, différentes manières de créer des flux, par exemple en utilisant une collection, en créant des données de flux à partir de valeurs spécifiées. Il crée également un tableau en utilisant les données du flux et calcule les espaces vides à l'aide de Stream. La méthode empty() calcule non seulement les espaces vides, nous pouvons créer les données Stream à l'aide de Stream. méthode constructeur(). Avec l'aide de la méthode iterate(), nous pouvons calculer les données Stream infinies car Iterable est l'interface et elle ne fournit aucune méthode par défaut StreamSupport.Stream() et obtenir des données Stream à l'aide de l'objet Iterable.

Exemple n°1

import java.util.*;
import java.util.stream.*;
class first {
private static <T> void methd(Iterable<T> itr)
{
Stream<T> str
= StreamSupport
.stream(itr.spliterator(),
false);
Iterator<T> its = str.iterator();
while (its.hasNext()) {
System.out.print(its.next() + " ");
}
}
public static void main(String[] args)
{
Iterable<String> itr
= Arrays.<em>asList</em>("Marina", "Adyar", "Parrys or Broadway","Tambaram","Gundy");
methd(itr);
}
}

Exemple de sortie :

Flux de collecte Java

In the above example we used Stream Instance creation and also we can use the StreamSupport class for accessing the stream() method. Like that we can use the Iterator<> interface for accessing the stream inputs and assign it to the variable. In the main method using Iterable<> interface we can access the values as Arrays and asList() method.

Example #2

import java.util.*;
import java.util.stream.*;
class Second {
private static <T> void methd(Iterator<T> itr)
{
Spliterator<T> splititr
= Spliterators
spliteratorUnknownSize(itr,
Spliterator.NONNULL);
Stream<T> str
= StreamSupport.<em>stream</em>(splititr, false);
Iterator<T> its = str.iterator();
while (its.hasNext()) {
System.<em>out</em>.print(its.next() + " ");
}
}
public static void main(String[] args)
Iterator<String> itre = Arrays
.asList("Thiruvanmaiyur", "Perungalathur", "TNagar","Central","Besant Nagar")
.iterator();
methd(itre);
}
}

Sample Output:

Flux de collecte Java

In the above example, we used an additionally Spliterator class for accessing the Stream inputs using Iterator interface we can access the Array List inputs using the asList() method.

Conclusion

While streams aren’t used by everyone and don’t necessarily indicate a superior approach, free certificate courses can help developers understand this newer way of programming, which incorporates functional-style programming and lambda expressions for Java. It’s up to developers to determine whether to use functional or imperative programming styles, and by taking advantage of free certificate courses, they can learn how to effectively combine both ideas to enhance their programs with enough effort.

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
Article précédent:Cadre de collecte JavaArticle suivant:Cadre de collecte Java