私は言葉のリストを持っています。
List<String> words = Arrays.asList("Hello alan i am here where are you"+
"and what are you doing hello are you there");
リストで複数回繰り返される上位 7 つの単語を降順で取得するにはどうすればよいですか? そして、単一のエントリの単語をアルファベット順に並べる必要があります。したがって、上記の出力は上位 7 語になります。
you (3)
are (2)
hello (2)
alan (1)
am (1)
and (1)
doing (1)
ストリーム、ラムダを使用してJava 8でこれを行うことを検討しています。
私はこのように努力しています。最初にリストを並べ替えます。次に、単語のリスト内の単語数を使用して単語のマップを取得します。
List<String> sortedWords = Arrays.asList("Hello alan i am here where are you and what are you doing hello you there".split(" "))
.stream().sorted().collect(toList());
Map<String, Long> collect =
sortedWords.stream().collect(groupingBy(Function.identity(), counting()));