58. Поиск человека по имени #
Условие задачи:
📌 Дан класс Person
с полями name
и age
. Нужно реализовать метод findPersonByName(List<Person> persons, String name)
, который возвращает Optional<Person>
первого человека из списка с заданным именем.
Код:
import java.util.List;
import java.util.Optional;
class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public Integer getAge() { return age; }
}
public class PersonService {
public Optional<Person> findPersonByName(List<Person> persons, String name) {
// TODO
return Optional.empty();
}
}
Спойлеры к решению
Подсказки
💡 Используйте
💡 Примените
💡 Закончите цепочку вызовом
persons.stream()
для создания потока.💡 Примените
filter(p -> name.equals(p.getName()))
для поиска по имени.💡 Закончите цепочку вызовом
findFirst()
, чтобы получить Optional<Person>
.Решение
import java.util.List;
import java.util.Optional;
public class PersonService {
public Optional<Person> findPersonByName(List<Person> persons, String name) {
return persons.stream()
.filter(p -> name.equals(p.getName()))
.findFirst();
}
}