Worthäufigkeitszählung in Java 8 mit Streams
Das Zählen der Häufigkeit von Wörtern innerhalb einer Liste ist eine häufige Aufgabe in der Textverarbeitung. In Java 8 kann dies mithilfe der Methoden Collectors.groupingBy() und Collectors.counting() effizient erreicht werden.
Um die Worthäufigkeit in einer Liste von Zeichenfolgen zu ermitteln, können Sie die folgenden Schritte ausführen:
Zum Beispiel anhand der folgenden Liste von Wörtern:
List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Sie können die Worthäufigkeiten berechnen als folgt:
Map<String,Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Dadurch wird eine Karte mit den Worthäufigkeiten erstellt, wobei die Schlüssel die Wörter und die Werte die Häufigkeit des Vorkommens sind. Das Ergebnis für die gegebene Liste wäre:
{ciao=2, hello=1, bye=2}
Um die Karte nach Werten zu sortieren, können Sie LinkedHashMap und die Methode enterSet() verwenden, um die Karteneinträge in einem Stream zu sammeln. Verwenden Sie dann sorted(), um die Einträge nach Wert in absteigender Reihenfolge zu sortieren, und Collectors.toMap(), um sie in einer neuen LinkedHashMap zu sammeln:
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 ));
Dadurch wird eine sortierte Karte erstellt, in der die Wörter sortiert sind ihre Häufigkeit.
Das obige ist der detaillierte Inhalt vonWie zählt man Worthäufigkeiten in Java 8 mithilfe von Streams?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!