Java 8 での単語頻度カウント: 合理化されたアプローチ
Java 8 では、リスト内の単語の頻度カウントをエレガントに実行できます。
次のリストの例を考えてみましょう。 List
<code class="java">Map<String, Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));</code>
このコードは、まず文字列 ID によってリスト要素をグループ化し、キーが一意の単語であり、値が固有であるマップを効果的に作成します。彼らの数。 Collectors.counting コレクターは、各単語のカウントを自動的に増分します。
結果のマップ wordFrequency は、印刷されると {ciao=2, hello=1, bye=2} のようになります。
または、整数値カウントの場合:
<code class="java">Map<String, Integer> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.summingInt(e -> 1)));</code>
このバリアントは、Collectors.summingInt を使用して整数カウントを蓄積します。
結果のマップを値で並べ替えるには、追加のストリームとコレクターをチェーンできます。
<code class="java">LinkedHashMap<String, Long> countByWordSorted = wordFrequencies.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 サイトの他の関連記事を参照してください。