Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Продвинутые стримы Java: Коллекции

List<User> users = List.of(new User(1, "Max"));

// Выведем всех пользователей на экран
users.stream()
    .forEach(System.out::println); // => User{id=1, name='Max'}

List<User> users2 = List.of(new User(3, "Nick"));

// Преобразуем списки пользователей в словарь
Map<Integer, String> namesMap = Stream.concat(users.stream(), users2.stream())
    .collect(Collectors.toMap(User::getId, User::getName, (v1, v2) -> v1));

System.out.println(namesMap); // => {1=Max, 3=Nick}

// Пользователь с самым коротким именем
User firstUser = users.stream()
    .sorted(Comparator.comparing(x -> x.getName().length()))
    .findFirst()
    .orElse(null);

System.out.println(firstUser); // => User{id=1, name='Max'}

// Пользователь с наименьшим id
User firstUserAgain = users.stream()
    .sorted(Comparator.comparingInt(x -> x.getId()))
    .findFirst()
    .orElseThrow(() -> new IllegalArgumentException("no users found"));

System.out.println(firstUserAgain); // => User{id=1, name='Max'}
private static Integer getUserId(String name) throws IllegalArgumentException {
    for (User user : users) {
        if (user.getName().equals(name)) {
            return user.getId();
        }
    }
    throw new IllegalArgumentException("No user with such name!");
}
// throws IllegalArgumentException
Integer id = getUserId("Ivan");
System.out.println(id);

Класс User

public class User {
    private Integer id;
    private String name;

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("User{");
        sb.append("id=").append(id);
        sb.append(", name='").append(name).append('\'');
        sb.append('}');
        return sb.toString();
    }
}


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
2 февраля 10 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу