Heim >Java >javaLernprogramm >Wie kann ich mit Java 8 die Worthäufigkeit in einer Liste effizient zählen?
Bei der Webentwicklung und Datenanalyse ist das Verständnis der Worthäufigkeit von entscheidender Bedeutung. Um dies zu erreichen, beschäftigen wir uns damit, wie man die Häufigkeit von Wörtern in einer Liste mit Java 8 zählt.
Die Stream-API in Java 8 bietet eine elegante Lösung für Wörter Frequenzzählung. Erstellen Sie zunächst eine Liste mit Wörtern:
List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Die Kernlogik besteht darin, die Wörter nach ihrer Identität zu gruppieren und die Vorkommen zu zählen:
Map<String, Long> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Dadurch wird eine Karte erstellt, auf der sich jeder Schlüssel befindet ein einzigartiges Wort, und der entsprechende Wert ist seine Häufigkeit. Die Ausgabe sollte wie folgt aussehen:
{ciao=2, hello=1, bye=2}
Ganzzahlwerte zählen
Wenn Sie Ganzzahlwerte anstelle von langen Werten benötigen, verwenden Sie:
Map<String, Integer> collect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
Um die Karte nach Werten in absteigender Reihenfolge zu sortieren, verwenden Sie Folgendes:
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 ));
Dieser Schritt gibt eine sortierte LinkedHashMap zurück, in der die Schlüssel die Wörter und die Werte darstellen ihre sortierten Frequenzen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Java 8 die Worthäufigkeit in einer Liste effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!