在 Web 开发和数据分析中,理解词频至关重要。为了实现这一目标,我们将深入研究如何使用 Java 8 计算列表中单词的频率。
Java 8 中的 Stream API 为单词提供了一个优雅的解决方案频率计数。首先,创建一个单词列表:
ListwordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
核心逻辑涉及根据单词的身份对单词进行分组并统计出现次数:
Mapcollect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
这会生成一个映射,其中每个键都是唯一的单词,相应的值是其频率。输出应类似于:
{ciao=2, hello=1, bye=2}
计数整数值
如果您需要整数值而不是长值,请使用:
Mapcollect = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
根据中的值对地图进行排序降序排列,使用:
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 ));
这一步返回一个排序的 LinkedHashMap,其中键代表单词,值代表它们的排序频率。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3