Getting object with max date property from list of objects Java 8

I have a class called Contact that has a Date lastUpdated; variable.

I would like to pull the Contact out of a List<Contact> that has the max lastUpdated variable.

I know that this can be done by writing a custom comparator and using Collections.max, but I was wondering if there is a way this can be done in Java 8 that does not require using a custom comparator, since I just want to pull the one with a max date in just one spot in my code, and the Contact class should not always use the lastUpdated variable for comparing instances.


Writing custom comparator in Java-8 is very simple. Use:

Comparator.comparing(c -> c.lastUpdated);

So if you have a List<Contact> contacts, you can use

Contact lastContact = Collections.max(contacts, Comparator.comparing(c -> c.lastUpdated));

Or, using method references:

Contact lastContact = Collections.max(contacts, Comparator.comparing(Contact::getLastUpdated));

Try the following (untested):

contacts.stream().max(Comparator.comparing(Contact::getLastUpdated)).get()