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

How to Count Word Frequencies in Java 8 Using Streams?

Barbara Streisand
Release: 2024-10-31 05:54:30
Original
473 people have browsed it

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

You can calculate the word frequencies as follows:

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

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}
Copy after login

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

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!

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