Pour itérer efficacement sur un flux et accéder aux indices, plusieurs approches sont disponibles.
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.
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!