Maison >Java >javaDidacticiel >Comment compter efficacement les occurrences de chaînes en Java à l'aide de flux ?

Comment compter efficacement les occurrences de chaînes en Java à l'aide de flux ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-30 17:53:16409parcourir

How to Efficiently Count Occurrences of Strings in Java Using Streams?

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!

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