„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 08.11.2024
Durchsuche:215

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 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 collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

Dies erzeugt eine Karte, in der jeder Schlüssel ein eindeutiges Wort ist und der entsprechende Wert seine Häufigkeit ist. Die Ausgabe sollte wie folgt aussehen:

{ciao=2, hello=1, bye=2}

Counting Integer Values

Wenn Sie ganzzahlige Werte benötigen Verwenden Sie anstelle von langen Werten:

Map collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));

Sortieren der Karte nach Wert

So sortieren Sie die Karte basierend auf Werten in Absteigende Reihenfolge, verwenden Sie:

LinkedHashMap 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 darstellen und die Werte ihre sortierten Häufigkeiten darstellen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3