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

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

Patricia Arquette
Release: 2024-10-31 20:41:02
Original
662 people have browsed it

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

Counting Word Frequency with Java 8

In web development and data analysis, understanding the frequency of words is crucial. To achieve this, we'll delve into how to count the frequency of words in a list using Java 8.

Java 8 Solution

The Stream API in Java 8 provides an elegant solution for word frequency counting. To begin, create a list of words:

List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Copy after login

The core logic involves grouping the words by their identity and counting the occurrences:

Map<String, Long> collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Copy after login

This produces a map where each key is a unique word, and the corresponding value is its frequency. The output should resemble:

{ciao=2, hello=1, bye=2}
Copy after login

Counting Integer Values

If you require integer values instead of long values, use:

Map<String, Integer> collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
Copy after login

Sorting the Map by Value

To sort the map based on values in descending order, use:

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
            ));
Copy after login

This step returns a sorted LinkedHashMap where the keys represent the words, and the values represent their sorted frequencies.

The above is the detailed content of How can I efficiently count word frequency in a list using Java 8?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template