groupingBy

Lab Java Advanced 30 points

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
Sample input available Sample output available
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));
    }
}
Output
Answer
HOME LEARN COMMUNITY DASHBOARD