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

后端 未结 4 770
执念已碎
执念已碎 2021-02-01 01:23

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

I would like to pull the Contact out of a List

相关标签:
4条回答
  • 2021-02-01 02:04

    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<Contact> 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.

    0 讨论(0)
  • 2021-02-01 02:04

    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));
    
    0 讨论(0)
  • 2021-02-01 02:14

    Use List<T>.stream().max(Comparator<T>).get() after you defined a suitable Comparator.

    0 讨论(0)
  • 2021-02-01 02:25

    Try the following (untested):

    contacts.stream().max(Comparator.comparing(Contact::getLastUpdated)).get()
    
    0 讨论(0)
提交回复
热议问题