"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-08
Parcourir:238

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 wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");

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

Map 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 collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));

Tri de la carte par valeur

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

LinkedHashMap 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3