Maison >Java >javaDidacticiel >Comment puis-je convertir un itérable en flux Java 8 sans utiliser de liste ?

Comment puis-je convertir un itérable en flux Java 8 sans utiliser de liste ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-19 03:55:03495parcourir

How Can I Convert an Iterable to a Java 8 Stream Without Using a List?

Conversion d'un itérable en flux dans le JDK Java 8

Problème :

Comment puis-je manipuler un itérable à l'aide de Java 8 API Stream sans la convertir en liste ?

Solution :

tl;dr : Utilisez StreamSupport.stream(iterable.spliterator(), false) pour créer un flux à partir de l'itérable.

Explication détaillée :

Iterable fournit une méthode spliterator() qui renvoie un Spliterator, qui peut être utilisé pour créer un diffuser en utilisant StreamSupport.stream. Voici l'extrait de code :

StreamSupport.stream(iterable.spliterator(), false)
    .filter(...)
    .moreStreamOps(...);

Cette approche évite les conversions inutiles en liste, ce qui peut améliorer les performances et la consommation de mémoire. StreamSupport.stream prend deux arguments :

  • iterable.spliterator() : le Spliterator obtenu à partir de l'Iterable.
  • false : Spécifie que l'itérable n'a pas de taille connue.

Le flux résultant peut ensuite être manipulé à l'aide d'opérations de l'API Stream telles que le filtre, la carte, etc.

Avantages :

L'utilisation de StreamSupport.stream offre les avantages suivants :

  • Commodité : Plus simple et moins sujet aux erreurs que la manipulation manuelle des séparateurs.
  • Efficacité : Obtient un meilleur séparateur et les performances du flux, en particulier lorsque l'Iterable est déjà une collection.
  • Économies de mémoire : Évite les conversions inutiles en liste, réduisant ainsi la surcharge de mémoire.

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