Générer des paires consécutives à partir d'un flux d'éléments est une tâche courante en programmation. Considérons la tâche de convertir un flux simple comme { 0, 1, 2, 3, 4 } en un flux de paires comme suit : { new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) }.
Dans Java 8, les flux sont principalement conçus pour diviser les données en morceaux plus petits pour un traitement parallèle. Par conséquent, les étapes du pipeline avec état sont limitées et les opérations telles que l'accès aux éléments de flux adjacents ne sont pas directement prises en charge.
Une approche pour résoudre cette limitation consiste à utiliser les index de flux en s'appuyant sur une structure de données à accès aléatoire comme une ArrayList. Par exemple, si les éléments du flux sont stockés dans une ArrayList, nous pouvons générer les paires souhaitées comme suit :
IntStream.range(1, arrayList.size()) .mapToObj(i -> new Pair(arrayList.get(i-1), arrayList.get(i))) .forEach(System.out::println);
Cette solution a une limitation dans la mesure où elle nécessite que le flux d'entrée soit fini. Cependant, cela permet une exécution parallèle du pipeline.
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!