Maison > Java > javaDidacticiel > Comment convertir un itérateur en flux sans créer de copie ?

Comment convertir un itérateur en flux sans créer de copie ?

Barbara Streisand
Libérer: 2024-11-07 01:05:02
original
1115 Les gens l'ont consulté

How to Convert an Iterator to a Stream Without Creating a Copy?

Conversion d'un itérateur en flux sans copie

Convertir un itérateur directement en flux sans créer de copie intermédiaire est une opération souhaitable pour des raisons de performances. Voici deux méthodes efficaces pour réaliser cette conversion :

Méthode 1 : Utiliser Spliterator

Créez un Spliterator à partir de l'Iterator en utilisant la classe Spliterators et utilisez-le comme base pour le Stream :

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

Méthode 2 : Utilisation d'Iterable

Créez un Iterable à partir de l'Iterator à l'aide d'une expression lambda. Iterable est une interface fonctionnelle, ce qui rend cette conversion simple :

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

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

La clé pour éviter une copie dans les deux méthodes est qu'elles utilisent la classe StreamSupport, qui vous permet de créer un Stream directement à partir d'un Spliterator ou Itérable sans manipulation de collection intermédiaire.

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