配列内の単語の頻度を数える必要があります。結果を処理する(entrySetでなければならないと思う)... entrySetの順序も重要です。配列をLinkedHashMapに変換する必要があると思います。Java 8ストリーム。配列をLinkedHashMapに変換し、単一ストリームのentrySetで作業を続行してください
Map<String, Integer> map = new LinkedHashMap<>();
for(String word : words) {
Integer count = map.get(word);
count = (count == null) ? 1: ++count;
map.put(word, count);
}
次の解決策が見つかりましたが、その順序は尊重されていません。 そして、そのストリームを収集操作なしで使用することは可能ですか(マップまたはフラットマップを使用しています)?
Map<String, Long> collect =
wordsList.stream().collect(groupingBy(Function.identity(), counting()));
ありがとうございます。
なぜこのグループ化コレクターがLinkedHashMapを作成する必要があると思いますか?グループ化する他のコレクタはありませんが、作成するマップの種類を指定することはできますか?コレクターズのjavadocを読んだことはありますか? –
@JBnizet、私はgroupingByコレクターが自分の仕事でうまく見えるが、LinkedHashMapを作成しないと分かっている...私はちょうど注文を維持する方法を尋ねる... と同じストリームを使用して、 ... –
私はそれを理解しています。私の指摘は、javadocを読んだだけでは、自分で答えを見つけることができるということです。読書のドキュメントは、自律的で生産的なプログラマーになる鍵です。 –