Maison > Java > javaDidacticiel > le corps du texte

Comment convertir un itérateur en flux en Java ?

Patricia Arquette
Libérer: 2024-11-06 18:02:02
original
891 Les gens l'ont consulté

How do you convert an iterator to a stream in Java?

Conversion d'itérateurs en flux

En programmation Java, la conversion d'un itérateur en flux vous permet d'accéder aux éléments d'une collection de manière séquentielle . Cela peut être utile pour les opérations qui ne nécessitent qu'un seul passage sur les éléments, comme les filtrer ou les réduire.

Pour convertir un itérateur en flux, vous pouvez exploiter la classe StreamSupport et sa méthode stream(). Cette méthode prend en entrée un Spliterator, qui représente la structure sous-jacente de l'itérateur. Vous pouvez obtenir un Spliterator à partir d'un itérateur en utilisant la méthode Spliterators.spliteratorUnknownSize(). Voici un exemple :

Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream<String> targetStream = StreamSupport.stream(
        Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
        false);
Copier après la connexion

Une autre approche pour convertir un itérateur en flux consiste à créer un itérable à l'aide d'une expression lambda. L'interface Iterable est fonctionnelle, ce qui signifie que vous pouvez définir son implémentation avec une seule méthode. Voici comment y parvenir :

Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();

Iterable<String> iterable = () -> sourceIterator;
Stream<String> targetStream = StreamSupport.stream(iterable.spliterator(), false);
Copier après la connexion

Cette technique offre une meilleure lisibilité, en particulier lorsque vous travaillez avec des itérateurs complexes.

Lorsque vous tentez de convertir un itérateur en flux à l'aide de Stream.generate() méthode, vous pouvez rencontrer une NoSuchElementException si vous n’invoquez pas hasNext() sur l’itérateur. En effet, hasNext() garantit que l'itérateur a plus d'éléments à fournir.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal