Используйте max с Comparator.comparing(Car::getCreationDate). Он сравнит даты и вернёт Optional<Car>, не сортируя весь список.
Определение автомобиля с максимальной датой выпуска
Используйте max с Comparator.comparing(Car::getCreationDate). Он сравнит даты и вернёт Optional<Car>, не сортируя весь список.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Класс Car хранит дату выпуска в поле creationDate типа LocalDate. Создайте три объекта Car с различными датами выпуска, поместите их в список и найдите элемент, у которого дата выпуска самая поздняя.
public class Car {
private LocalDate creationDate;
public Car(LocalDate creationDate) {
this.creationDate = creationDate;
}
public LocalDate getCreationDate() {
return creationDate;
}
public void setCreationDate(LocalDate creationDate) {
this.creationDate = creationDate;
}
}
Ответ
Используйте max с Comparator.comparing(Car::getCreationDate). Он сравнит даты и вернёт Optional<Car>, не сортируя весь список.
List<Car> cars = List.of(
new Car(LocalDate.of(2020, 5, 10)),
new Car(LocalDate.of(2024, 3, 1)),
new Car(LocalDate.of(2022, 8, 20)));
Optional<Car> latest = cars.stream()
.max(Comparator.comparing(Car::getCreationDate));
Выбран автомобиль с датой 2024-03-01. Импорты LocalDate из java.time, коллекций и Comparator из java.util. Время O(n), дополнительная память O(1). Null-автомобили и null-даты не предусмотрены; если они допустимы, нужно явное правило фильтрации. При равной дате любой максимум подходит.