Home  >  Article  >  Java  >  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
Patricia ArquetteOriginal
2024-10-31 20:41:02589browse

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

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

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}

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

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

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!

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