Maison >Java >javaDidacticiel >Comment compter efficacement les occurrences de chaînes en Java à l'aide de flux ?
Comptage des occurrences avec groupBy de Java Stream
En Java, vous pouvez utiliser des flux pour agréger efficacement les données. Une opération courante consiste à regrouper les éléments par leurs valeurs et à compter leurs occurrences.
Exemple
Supposons que vous ayez une liste de chaînes et que vous souhaitiez compter la fréquence de chaque chaîne unique. . Le but est de créer une carte où la clé est une chaîne et la valeur est son nombre d'occurrences.
groupBy avec un collecteur de comptage
Pour y parvenir, nous peut utiliser la méthode groupBy en conjonction avec un collecteur de comptage. La méthode groupBy organise les éléments en groupes en fonction de la clé spécifiée. Dans ce cas, nous souhaitons regrouper les chaînes en fonction de leur identité.
Map<String, Long> wordToFrequency = list.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Dans ce code, Function.identity() obtient la chaîne elle-même comme clé de regroupement, préservant essentiellement les éléments d'origine. Collectors.counting() fournit un collecteur qui renvoie le nombre d'éléments dans chaque groupe.
Résultat
Après regroupement et comptage, nous obtenons une carte avec les nombres souhaités :
{Hello=2, World=1}
Cette carte contient le nombre d'occurrences pour chaque chaîne unique dans l'original list.
Considérations d'efficacité
Pour les grands ensembles de données, l'utilisation de Collectors.groupingByConcurrent peut offrir une efficacité améliorée. Il fonctionne de manière parallèle, améliorant les performances dans les environnements multicœurs. Cependant, cette approche peut s'avérer inadaptée dans les scénarios où l'ordre des éléments ou la sécurité des threads est crucial.
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!