Необходимо посчитать количество вхождений каждого символа в строку коллекции

Я изучаю джаву, и во время выполнения заданий столкнулся с проблемой. Задание состоит в подсчете количества вхождений каждого символа в строку коллекции. Вот пример:


public class TestMap {
    public static void main(String[] args) {
        Map<Integer, String> map = new TreeMap<>();
        map.put(1, "hello");
        map.put(2, "sdfhello");
        map.put(3, "helsdflo");
        map.put(4, "hestnllo");
    }
}

Вот, есть мапа. И я просто не понимаю, как посчитать вхождения каждого символа например в строке hello, то есть, сколько тут h, сколько тут l и так далее. Есть мысли по поводу разбития строки на символы, опять занесения в коллекцию и там уже подсчет, но наверное это должно как то проще делаться. Возможно как то это стримами можно реализовать, но во время обучения мы еще это не проходили, по идее задача на это не расчитана. Наведите на решение пожалуйста :)


Ответы (1 шт):

Автор решения: Alexandr

Метод подсчета количества вхождения каждого символа:

private static Map<Character, Long> calc(
        String str) {
    return str.chars()
            .mapToObj(i -> (char) i)
            .collect(Collectors.groupingBy(c -> c, Collectors.counting()));
}
→ Ссылка