首页 > Java > java教程 > 如何使用 Java 8 计算列表中的词频?

如何使用 Java 8 计算列表中的词频?

DDD
发布: 2024-10-30 02:11:29
原创
726 人浏览过

How to Calculate Word Frequencies in a List Using Java 8?

Java 8 中的单词频率计数

如何使用 Java 8 计算列表中单词的频率?

<code class="java">List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");</code>
登录后复制

结果应为:

<code class="java">{ciao=2, hello=1, bye=2}</code>
登录后复制

最开始,我预期会用到映射和化简方法,但实际方法略有不同。

<code class="java">Map<String, Long> collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
登录后复制

或者对于整数值:

<code class="java">Map<String, Integer> collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
登录后复制

编辑

我还添加了如何按值对映射进行排序:

<code class="java">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
            ));</code>
登录后复制

以上是如何使用 Java 8 计算列表中的词频?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板