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.
The Stream API in Java 8 provides an elegant solution for word frequency counting. To begin, create a list of words:
ListwordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
The core logic involves grouping the words by their identity and counting the occurrences:
Mapcollect = 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:
Mapcollect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
To sort the map based on values in descending order, use:
LinkedHashMapcountByWordSorted = 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.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3