groupingBy
Completed
Read words and group them by first letter with Collectors.groupingBy into a TreeMap, counting each group with Collectors.counting(). Print letter=count lines.
Input
One line of words.
Output
One line per letter.
Example
Input
apple bat avocado cat banana blueberry
Output
a=2 b=3 c=1
Editor
Java
Hints
groupingBy(classifier, mapFactory, downstream) - TreeMap::new keeps keys sorted.
Solution explanation
groupingBy with a downstream collector replaces a whole loop-and-map routine.
Show solution
import java.util.Arrays;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] words = sc.nextLine().trim().split("\\s+");
Map<Character, Long> counts = Arrays.stream(words)
.collect(Collectors.groupingBy(w -> w.charAt(0), TreeMap::new, Collectors.counting()));
counts.forEach((letter, count) -> System.out.println(letter + "=" + count));
}
}