在 Web 開發和資料分析中,理解詞頻至關重要。為了實現這一目標,我們將深入研究如何使用 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中文網其他相關文章!