ストリームを使用した Java 8 の単語頻度カウント
リスト内の単語の頻度をカウントすることは、テキスト処理における一般的なタスクです。 Java 8 では、これは Collectors.groupingBy() メソッドと Collectors.counting() メソッドを使用して効率的に実現できます。
文字列のリスト内の単語の出現頻度を見つけるには、次の手順を使用できます。
たとえば、次の単語リストがあるとします。
List<String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
単語の頻度は次のように計算できます。
Map<String,Long> wordFrequencies = wordsList.stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
これにより、単語の出現頻度を含むマップが生成されます。ここで、キーは単語、値は出現回数です。指定されたリストの結果は次のようになります。
{ciao=2, hello=1, bye=2}
マップを値で並べ替えるには、LinkedHashMap とentrySet() メソッドを使用してマップ エントリをストリームに収集します。次に、sorted() を使用してエントリを値の降順に並べ替え、Collectors.toMap() を使用してそれらを新しい LinkedHashMap に収集します。
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 ));
これにより、単語が次の順序で並べ替えられたマップが生成されます。その周波数。
以上がJava 8 でストリームを使用して単語の出現頻度をカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。