」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 Java 8 有效統計列表中的詞頻?

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

發佈於2024-11-08
瀏覽:257

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 wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");

核心邏輯涉及根據單字的身份對單字進行分組並統計出現次數:

Map collect = wordsList.stream()
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

這會產生一個映射,其中每個鍵都是唯一的單詞,相應的值是其頻率。輸出應類似於:

{ciao=2, hello=1, bye=2}

計數整數值

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

Map collect = wordsList.stream()
     .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));

按值對地圖排序

根據中的值對地圖進行排序降序排列,使用:

LinkedHashMap 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,其中鍵代表單字,值代表它們的排序頻率。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3