Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: stream, grouping, collectors

Как решить задачу на группировку с помощью Stream API?

Проверяет умение использовать Collectors.groupingBy.

Короткий ответ

Используйте Collectors.groupingBy для группировки элементов по ключу:

Map<String, List<Person>> peopleByCity = people.stream()
    .collect(Collectors.groupingBy(Person::getCity));

Длинный ответ

1. Простая группировка

List<Person> people = List.of(
    new Person("Alice", "Moscow"),
    new Person("Bob", "Moscow"),
    new Person("Charlie", "London")
);

Map<String, List<Person>> byCity = people.stream()
    .collect(Collectors.groupingBy(Person::getCity));
// Результат: {"Moscow": [Alice, Bob], "London": [Charlie]}

2. Группировка с подсчётом

Map<String, Long> countByCity = people.stream()
    .collect(Collectors.groupingBy(Person::getCity, Collectors.counting()));
// {"Moscow": 2, "London": 1}

3. Группировка с маппингом

Map<String, List<String>> namesByCity = people.stream()
    .collect(Collectors.groupingBy(
        Person::getCity,
        Collectors.mapping(Person::getName, Collectors.toList())
    ));
// {"Moscow": ["Alice", "Bob"], "London": ["Charlie"]}

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#stream

#grouping

#collectors

Подпишись на Java Developer в телеграм