Maison > Java > javaDidacticiel > Comment puis-je compter efficacement la fréquence des mots dans une liste à l'aide de Java 8 ?

Comment puis-je compter efficacement la fréquence des mots dans une liste à l'aide de Java 8 ?

Patricia Arquette
Libérer: 2024-10-31 20:41:02
original
694 Les gens l'ont consulté

How can I efficiently count word frequency in a list using Java 8?

Compter la fréquence des mots avec Java 8

Dans le développement Web et l'analyse de données, comprendre la fréquence des mots est crucial. Pour y parvenir, nous verrons comment compter la fréquence des mots dans une liste à l'aide de Java 8.

Solution Java 8

L'API Stream dans Java 8 fournit une solution élégante pour les mots comptage de fréquence. Pour commencer, créez une liste de mots :

List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Copier après la connexion

La logique de base consiste à regrouper les mots selon leur identité et à compter les occurrences :

Map<String, Long> collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Copier après la connexion

Cela produit une carte où chaque clé est un mot unique, et la valeur correspondante est sa fréquence. Le résultat doit ressembler à :

{ciao=2, hello=1, bye=2}
Copier après la connexion

Comptage des valeurs entières

Si vous avez besoin de valeurs entières au lieu de valeurs longues, utilisez :

Map<String, Integer> collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
Copier après la connexion

Trier la carte par valeur

Pour trier la carte en fonction des valeurs par ordre décroissant, utilisez :

LinkedHashMap<String, Long> countByWordSorted = collect.entrySet()
            .stream()
            .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
            .collect(Collectors.toMap(
                    Map.Entry::getKey,
                    Map.Entry::getValue,
                    (v1, v2) -> {
                        throw new IllegalStateException();
                    },
                    LinkedHashMap::new
            ));
Copier après la connexion

Cette étape renvoie un LinkedHashMap trié où les clés représentent les mots et les valeurs représentent leurs fréquences triées.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal