首頁 > Java > java教程 > 如何使用 Java 8 計算列表中的詞頻?

如何使用 Java 8 計算列表中的詞頻?

DDD
發布: 2024-10-30 02:11:29
原創
718 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板