Maison > Java > javaDidacticiel > Comment puis-je parcourir efficacement un flux Java 8 et accéder aux index ?

Comment puis-je parcourir efficacement un flux Java 8 et accéder aux index ?

Susan Sarandon
Libérer: 2024-12-27 12:10:10
original
931 Les gens l'ont consulté

How Can I Efficiently Iterate Through a Java 8 Stream and Access Indices?

Itération de flux efficace avec des indices dans Java 8

Introduction

L'accès aux indices lors d'une itération sur des flux dans Java 8 peut être une tâche fastidieuse, surtout par rapport à son homologue LINQ. Cet article explore des moyens concis et efficaces pour atteindre cette fonctionnalité.

La solution intermédiaire

Une approche consiste à combiner un flux d'indices avec le flux d'éléments, en utilisant le méthode zip. Cependant, cette méthode a été soit déplacée, soit supprimée, ce qui rend cette approche moins accessible.

La méthode la plus propre : à partir des indices

Une solution plus simple consiste à commencer par un flux d’indices. Ceci peut être réalisé en utilisant IntStream.range() et fournit un point de départ pratique pour les opérations de filtrage et de mappage :

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

Utilisation d'un index mutable

Une autre alternative est pour maintenir un compteur ad hoc en utilisant un objet mutable comme un AtomicInteger. Cette approche ressemble aux boucles for traditionnelles :

String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"};
AtomicInteger index = new AtomicInteger();
List<String> list = Arrays.stream(names)
                          .filter(n -> n.length() <= index.incrementAndGet())
                          .collect(Collectors.toList());
Copier après la connexion

Attention aux flux parallèles

Il est important de noter que l'utilisation de cette dernière méthode sur des flux parallèles peut introduire des problèmes, car des éléments ne peut pas être traité dans l'ordre.

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