Heim >Java >javaLernprogramm >Wie kann ich mit Java 8 die Worthäufigkeit in einer Liste effizient zählen?

Wie kann ich mit Java 8 die Worthäufigkeit in einer Liste effizient zählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 20:41:02655Durchsuche

How can I efficiently count word frequency in a list using Java 8?

Worthäufigkeit zählen mit Java 8

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.

Java 8-Lösung

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

Sortieren der Karte nach Wert

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!

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