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>
最初は、map およびreduce メソッドを使用することを期待していましたが、実際のメソッドは少し異なります。
<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 中国語 Web サイトの他の関連記事を参照してください。