У меня есть такая модель
class Person {
Instant updateDate; // mandatory
List<Account> accounts; // can be empty
}
class Account {
Instant accountUpdateDate; // can be null
}
Предположим, у меня есть список людей (у каждого человека есть список учетных записей, который может быть пустым)
Как я могу получить человека сmax accountUpdateDate, в противном случае я должен получить человека с max updateDate.
Что-то в этом роде
Comparator<Person> UPDATE_DATE_COMPARATOR = Comparator
.comparing(person -> person.getAccounts().stream().map(Account::getAccountUpdateDate)..., Comparator.nullsFirst(naturalOrder()))
.thenComparing(Person::getUpdateDate));
Collections.max(personList, UPDATE_DATE_COMPARATOR);