从对象列表中获取具有 max date 属性的对象 Java 8

2022-08-31 17:25:16

我有一个名为变量的类。ContactDate lastUpdated;

我想从具有 max 变量的 a 中提取出来。ContactList<Contact>lastUpdated

我知道这可以通过编写自定义比较器并使用来完成,但是我想知道在Java 8中是否有一种方法可以做到这一点,而不需要使用自定义比较器,因为我只想在我的代码中的一个位置拉动具有最大日期的比较器, 并且该类不应始终使用该变量来比较实例。Collections.maxContactlastUpdated


答案 1

在Java-8中编写自定义比较器非常简单。用:

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

所以如果你有一个,你可以使用List<Contact> contacts

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

或者,使用方法引用:

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

答案 2

请尝试以下操作(未经测试):

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