Collectors.groupingBy
の戻り値を TreeMap
やLinkedHashMap
にしたい場合は、第2引数にMapの生成方法を指定します。
例 : リスト内の単語を頭文字ごとに数えた結果をTreeMap
に格納する。
List<String> words = List.of("Cake", "Bird", "Apple", "Car", "Book", "Cat");
TreeMap<Character, Long> treemap = words.stream().collect(Collectors.groupingBy(word -> word.charAt(0), TreeMap::new, Collectors.counting()));
System.out.println(treemap); // => {A=1, B=2, C=3}
LinkedHashMap
にしたい場合は LinkedHashMap::new
と指定するだけです。
環境情報
- javac 21.0.6
- openjdk 21.0.6 2025-01-21 LTS