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
Patricia Arquetteoriginal
2024-10-31 20:41:02652parcourir

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");

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()));

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}

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)));

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
            ));

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!

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