Home  >  Article  >  Java  >  How to Count Word Frequencies in Java 8 Using Streams?

How to Count Word Frequencies in Java 8 Using Streams?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 05:54:30327browse

How to Count Word Frequencies in Java 8 Using Streams?

Word Frequency Count in Java 8 Using Streams

Counting the frequency of words within a list is a common task in text processing. In Java 8, this can be achieved efficiently using the Collectors.groupingBy() and Collectors.counting() methods.

To find the word frequency in a list of strings, you can use the following steps:

  1. Call stream() on the list to create a stream.
  2. Group the elements in the stream by their values using Collectors.groupingBy(Function.identity()).
  3. Count the occurrences of each word using Collectors.counting().

For example, given the following list of words:

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

You can calculate the word frequencies as follows:

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

This will produce a map with the word frequencies, where the keys are the words and the values are the number of occurrences. The result for the given list would be:

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

To sort the map by values, you can use LinkedHashMap and the entrySet() method to collect the map entries into a stream. Then, use sorted() to sort the entries by value in descending order and Collectors.toMap() to collect them into a new LinkedHashMap:

LinkedHashMap<String, Long> countByWordSorted = wordFrequencies.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 will produce a sorted map where the words are ordered by their frequency.

The above is the detailed content of How to Count Word Frequencies in Java 8 Using Streams?. 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