Как преобразовать Collection в Map где ключ - количество символов в строке, а значение это количество строк в коллекции с этой длиной

Вот что удалось написать

HashMap<String, String> map =
                            collection.stream()
                            .collect(Collectors.toMap(i -> i.length(), (i -> filter(i -> i.length())));

Но этот вариант не работает, потому что не работает вторая лямбда

Пробовал еще такой вариант:

for (String string : collection) {
            int key = string.length();
            int value = collection.stream().filter(i -> i.length() = key);
            hashMap.put(key,value);

НО в лямбда нельзя передать переменную кроме константы

Исправил на

final int key = string.length();
            int value = collection.stream().filter(i -> i.length() == key).collect(Collectors.toList());
            hashMap.put(key,value);

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

Автор решения: Mike Doe
   public void map(String... array) {
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        Collection <String> collection = Arrays.asList(array);
        for (String string : collection) {
            final int key = string.length();
            List<String> list =
                    collection.stream()
                    .filter(i -> i.length() == key)
                    .collect(Collectors.toList());

            int value = (int) list.stream().count();
            hashMap.put(key,value);

        }
        System.out.println(hashMap);
→ Ссылка
Автор решения: kami

стоит воспользоваться возможностью коллекторов разруливать дубликаты ключей при создании Map:

Collection<String> collection = Arrays.asList("123", "1234", "234", "234", "12345", "12344");
Map<Integer, Integer> map = collection.stream()
    .collect(
        Collectors.toMap(
            s->s.length(), // в качестве ключа - длина строки
            s->1, // изначально считаем, что элемент с такой длиной строки один
            (existing, replacement)->existing+replacement // но если он уже есть - прибавим значение
        )
    ); 

System.out.println(map);

Вывод:

{3=3, 4=1, 5=2}

→ Ссылка