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

如何使用 Java 8 有效統計列表中的詞頻?

Patricia Arquette
發布: 2024-10-31 20:41:02
原創
694 人瀏覽過

How can I efficiently count word frequency in a list using Java 8?

使用 Java 8 計算詞頻

在 Web 開發和資料分析中,理解詞頻至關重要。為了實現這一目標,我們將深入研究如何使用 Java 8 計算清單中單字的頻率。

Java 8 解決方案

Java 8 中的 Stream API 為單字提供了一個優雅的解決方案頻率計數。首先,建立一個單字清單:

List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
登入後複製

核心邏輯涉及按單字的身份對單字進行分組併計算出現次數:

Map<String, Long> collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
登入後複製

這會產生一個映射,其中每個鍵是一個唯一的詞,對應的值就是它的頻率。輸出應類似:

{ciao=2, hello=1, bye=2}
登入後複製

計算整數值

如果您需要整數值而不是長值,請使用:

Map<String, Integer> collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));
登入後複製

按值對映射進行排序

要根據值降序對映射進行排序,請使用:

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
            ));
登入後複製

此步驟返回一個排序的LinkedHashMap,其中鍵代表單詞,值代表他們排序的頻率。

以上是如何使用 Java 8 有效統計列表中的詞頻?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板