Maison >Java >javaDidacticiel >Comment convertir un itérateur en flux en Java ?

Comment convertir un itérateur en flux en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-06 18:02:02903parcourir

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

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

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!

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