Нахождение пользователя в списке по имени

Отфильтруйте null-элементы, сравните fullName с targetName и верните findFirst(). При отсутствии совпадения получится Optional.empty().

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

Что ответить на собеседовании

Отфильтруйте null-элементы, сравните fullName с targetName и верните findFirst(). При отсутствии совпадения получится Optional.empty().

Подробный разбор

Ответ с пояснениями

Условие

Необходимо написать функцию, которая просматривает список объектов‑пользователей и возвращает тот, у кого имя совпадает с переданным параметром.

class Person {
    String fullName;
    int age;
}
Optional<Person> findByName(List<Person> persons, String targetName)

Ответ

Отфильтруйте null-элементы, сравните fullName с targetName и верните findFirst(). При отсутствии совпадения получится Optional.empty().

Optional<Person> findByName(List<Person> persons, String targetName) {
    java.util.Objects.requireNonNull(persons);
    java.util.Objects.requireNonNull(targetName);
    return persons.stream()
        .filter(java.util.Objects::nonNull)
        .filter(p -> targetName.equals(p.fullName))
        .findFirst();
}

Сравнение чувствительно к регистру, а targetName=null здесь запрещён явно. Если совпадений несколько, выбирается первый по порядку списка. Время O(n) в худшем случае; полную коллекцию результатов собирать не требуется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее