Implémentation Java 8 pour le comptage de la fréquence des mots
Identifier la fréquence des mots dans une liste donnée est une tâche essentielle dans le traitement du langage naturel. Java 8 offre une approche polyvalente pour compter efficacement les occurrences de mots à l'aide de son API de flux robuste et de ses collecteurs intégrés.
Problème :
Considérez la liste de mots suivante :
<code class="java">List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");</code>
L'objectif est de déterminer la fréquence de chaque mot, ce qui donne un résultat comme :
<code class="java">{ciao=2, hello=1, bye=2}</code>
Solution Java 8 :
Contrairement aux méthodes conventionnelles, Java 8 utilise une approche différente :
<code class="java">Map<String, Long> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
Dans cette ligne de code, la méthode stream() est utilisée pour lancer un flux d'éléments à partir de la liste de mots. Par la suite, Collectors.groupingBy() rassemble les éléments en fonction de leur identité (les mots eux-mêmes) et Collectors.counting() calcule la fréquence de chaque occurrence.
Pour les entiers, le code peut être légèrement modifié :
<code class="java">Map<String, Integer> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
Tri par valeur :
De plus, la carte résultante peut être triée par ordre décroissant de fréquence des mots :
<code class="java">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 ));</code>
Cet extrait de code supplémentaire ajoute un ensemble d'entrées au flux, le trie par ordre décroissant en fonction des valeurs et collecte les entrées dans un LinkedHashMap pour conserver l'ordre de tri.
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!