I have a class called Contact that has a Date lastUpdated; variable.
I would like to pull the Contact out of a List 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.
解决方案
and the Contact class should not always use the lastUpdated variable
for comparing instances
So you will have to provide a custom comparator whenever you want to compare multiple instances by their lastUpdated property, as it implies that this class is not comparable by default with this field.
Comparator cmp = Comparator.comparing(Contact::getLastUpdated);
As you know you can either use Collections.max or the Stream API to get the max instance according to this field, but you can't avoid writing a custom comparator.