Comptage des occurrences avec GroupBy dans Java Streams
L'API Java Stream fournit des mécanismes puissants pour manipuler et agréger efficacement les données. Une tâche courante consiste à compter les occurrences d'éléments dans un flux. Pour y parvenir avec la méthode groupBy(), il faut exploiter un collecteur supplémentaire.
Considérez l'extrait de code suivant, qui vise à collecter les éléments d'un flux dans une carte où les clés représentent des éléments uniques et les valeurs représentent leurs occurrences :
List<String> list = Arrays.asList("Hello", "Hello", "World"); // Desired output: // {Hello=2, World=1}
Pour ce faire, nous pouvons utiliser la méthode groupBy() avec un collecteur Collectors.counting() pour effectuer le comptage :
import java.util.*; import java.util.stream.*; class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Hello"); list.add("Hello"); list.add("World"); Map<String, Long> counted = list.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); System.out.println(counted); } }
Explication :
La carte comptée résultante aura des clés comme éléments et des valeurs comme leurs comptes respectifs :
{Hello=2, World=1}
Alternativement, pour des considérations d'efficacité dans certains scénarios, vous pouvez explorer en utilisant des collecteurs .groupingByConcurrent. N'oubliez pas d'évaluer si votre cas d'utilisation spécifique correspond aux exigences de sécurité du regroupement simultané.
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!