Comptage de la fréquence des mots dans Java 8 à l'aide de flux
Compter la fréquence des mots dans une liste est une tâche courante dans le traitement de texte. Dans Java 8, cela peut être réalisé efficacement en utilisant les méthodes Collectors.groupingBy() et Collectors.counting().
Pour trouver la fréquence des mots dans une liste de chaînes, vous pouvez suivre les étapes suivantes :
Par exemple, étant donné la liste de mots suivante :
List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Vous pouvez calculer les fréquences des mots comme suit :
Map<String,Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Cela produira une carte avec les fréquences des mots, où les clés sont les mots et les valeurs sont le nombre d'occurrences. Le résultat pour la liste donnée serait :
{ciao=2, hello=1, bye=2}
Pour trier la carte par valeurs, vous pouvez utiliser LinkedHashMap et la méthode EntrySet() pour collecter les entrées de la carte dans un flux. Ensuite, utilisez sorted() pour trier les entrées par valeur dans l'ordre décroissant et Collectors.toMap() pour les collecter dans un nouveau LinkedHashMap :
LinkedHashMap<String, Long> countByWordSorted = wordFrequencies.entrySet() .stream() .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) .collect(Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> { throw new IllegalStateException(); }, LinkedHashMap::new ));
Cela produira une carte triée où les mots sont classés par leur fréquence.
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!