Heim  >  Artikel  >  Java  >  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
Barbara StreisandOriginal
2024-10-31 05:54:30327Durchsuche

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");

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!

Stellungnahme:
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