Java 8-Implementierung für die Worthäufigkeitszählung
Die Ermittlung der Häufigkeit von Wörtern innerhalb einer bestimmten Liste ist eine wesentliche Aufgabe bei der Verarbeitung natürlicher Sprache. Java 8 bietet einen vielseitigen Ansatz zum effizienten Zählen des Vorkommens von Wörtern mithilfe seiner robusten Stream-API und integrierten Kollektoren.
Problem:
Betrachten Sie die folgende Liste von Wörtern :
<code class="java">List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");</code>
Das Ziel besteht darin, die Häufigkeitszahl jedes Wortes zu bestimmen, was zu einer Ausgabe wie:
<code class="java">{ciao=2, hello=1, bye=2}</code>
Java 8-Lösung:
führtIm Gegensatz zu herkömmlichen Methoden verwendet Java 8 einen anderen Ansatz:
<code class="java">Map<String, Long> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
In dieser Codezeile wird die Methode stream() verwendet, um einen Stream von Elementen aus der Wortliste zu initiieren. Anschließend sammelt Collectors.groupingBy() Elemente basierend auf ihrer Identität (den Wörtern selbst) und Collectors.counting() berechnet die Häufigkeit jedes Vorkommens.
Für ganze Zahlen kann der Code leicht geändert werden:
<code class="java">Map<String, Integer> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
Sortierung nach Wert:
Außerdem kann die resultierende Karte in absteigender Reihenfolge der Worthäufigkeit sortiert werden:
<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>
Dieses zusätzliche Code-Snippet Hängt einen Eintragssatz an den Stream an, sortiert ihn in absteigender Reihenfolge basierend auf den Werten und sammelt die Einträge in einer LinkedHashMap, um die sortierte Reihenfolge beizubehalten.
Das obige ist der detaillierte Inhalt vonWie kann die Stream-API von Java 8 verwendet werden, um Worthäufigkeiten in einer Liste effizient zu zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!