Maison > Java > javaDidacticiel > Comment itérer efficacement les flux Java 8 avec des indices ?

Comment itérer efficacement les flux Java 8 avec des indices ?

Susan Sarandon
Libérer: 2024-12-17 07:26:24
original
392 Les gens l'ont consulté

How to Efficiently Iterate Java 8 Streams with Indices?

Itération de flux avec des indices dans Java 8

Dans Java 8, les flux fournissent un moyen puissant de traiter des collections d'éléments. Cependant, parcourir un flux tout en accédant aux index peut être difficile.

L'extrait de code fourni démontre une solution élaborée utilisant zip et SimpleEntry pour associer des index et des éléments de flux. Cependant, existe-t-il une approche plus concise ?

Heureusement, oui. Vous pouvez commencer avec un flux d'index et filtrer en fonction de l'index en le comparant à la longueur de l'élément correspondant. Voici un exemple :

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
IntStream.range(0, names.length)
         .filter(i -> names[i].length() <= i)
         .mapToObj(i -> names[i])
         .collect(Collectors.toList());
Copier après la connexion

Approche alternative

Vous pouvez également gérer un compteur ad hoc en utilisant un objet mutable comme AtomicInteger. Cependant, cette méthode ne doit pas être utilisée sur des flux parallèles car elle peut conduire à des résultats incorrects en raison d'un traitement dans le désordre. Un exemple :

AtomicInteger index = new AtomicInteger();
List<String> list = Arrays.stream(names)
                          .filter(n -> n.length() <= index.incrementAndGet())
                          .collect(Collectors.toList());
Copier après la connexion

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