Выбор ответа Middle Лямбды и Stream API обновлено
toMap и дубли ключей
Вопрос
Что произойдёт при Stream.of("ab", "cd", "ef").collect(Collectors.toMap(String::length, s -> s))?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: IllegalStateException: Duplicate key 2. toMap с двумя аргументами бросает IllegalStateException при совпадении ключей.
Варианты ответа
- Получится
{2=ef}: последнее значение перезапишет - Получится
{2=ab}: первое значение сохранится - Получится
{2=[ab, cd, ef]} - IllegalStateException: Duplicate key 2правильный ответ
Разбор
toMap с двумя аргументами бросает IllegalStateException при совпадении ключей. Чтобы оставить первое или последнее, передают функцию слияния: toMap(k, v, (a, b) -> a). Список значений по ключу даёт groupingBy.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.