Maison >Java >javaDidacticiel >Comment puis-je parcourir un flux Java 8 tout en accédant aux index d'éléments ?

Comment puis-je parcourir un flux Java 8 tout en accédant aux index d'éléments ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-27 14:53:10773parcourir

How Can I Iterate Through a Java 8 Stream While Accessing Element Indices?

Itérer un flux avec des indices dans Java 8 : une solution concise

Pour itérer efficacement sur un flux et accéder aux indices, plusieurs approches sont disponibles.

Utiliser un flux d'indices

La solution la plus propre consiste à créer un flux d'indices et à le filtrer en fonction du éléments du flux :

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

Cette approche garantit que la liste résultante contient uniquement des éléments qui répondent au critère basé sur l'index.

Utiliser un compteur AtomicInteger

Une autre alternative consiste à maintenir un compteur mutable dans le flux :

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

Cette méthode fournit une syntaxe familière similaire aux boucles for. Cependant, il est crucial de noter que cette approche peut potentiellement échouer lorsqu'elle est utilisée sur un flux parallèle, car les éléments peuvent ne pas être traités dans l'ordre.

En fin de compte, le choix de l'approche dépend des exigences spécifiques. et considérations de performances de l'application.

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