Heim > Java > javaLernprogramm > Wie zählt man Worthäufigkeiten in Java 8 mithilfe von Streams?

Wie zählt man Worthäufigkeiten in Java 8 mithilfe von Streams?

Barbara Streisand
Freigeben: 2024-10-31 05:54:30
Original
474 Leute haben es durchsucht

How to Count Word Frequencies in Java 8 Using Streams?

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:

  1. Rufen Sie stream() in der Liste auf, um einen Stream zu erstellen.
  2. Gruppieren Sie die Elemente im Stream nach ihren Werten mit Collectors.groupingBy(Function.identity()).
  3. Zählen Sie die Vorkommen jedes Wortes mit Collectors.counting().

Zum Beispiel anhand der folgenden Liste von Wörtern:

List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Nach dem Login kopieren

Sie können die Worthäufigkeiten berechnen als folgt:

Map<String,Long> wordFrequencies = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Nach dem Login kopieren

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}
Nach dem Login kopieren

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
    ));
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage