Comptage de la fréquence des mots en Java 8 : une approche simplifiée
En Java 8, compter la fréquence des mots dans une liste peut être réalisé avec élégance en utilisant des flux.
Considérez l'exemple de liste suivant : List
<code class="java">Map<String, Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
Ce code regroupe d'abord les éléments de la liste en fonction de leur identité de chaîne, créant ainsi une carte où les clés sont des mots uniques et les valeurs sont leurs comptes. Le collecteur Collectors.counting incrémente automatiquement le nombre pour chaque mot.
La carte résultante, wordFrequencies, ressemblera à {ciao=2, hello=1, bye=2} une fois imprimée.
Alternativement , pour les nombres entiers :
<code class="java">Map<String, Integer> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
Cette variante utilise Collectors.summingInt pour accumuler des nombres entiers.
Pour trier la carte résultante par valeur, nous pouvons enchaîner des flux et des collecteurs supplémentaires :
<code class="java">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 ));</code>
Ce tri garantit que les mots les plus fréquents apparaissent en premier sur la carte.
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!