Heim > Java > javaLernprogramm > Hauptteil

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

Patricia Arquette
Freigeben: 2024-10-31 20:41:02
Original
594 Leute haben es durchsucht

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

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

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

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

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!