【发布时间】:2014-05-22 10:22:35
【问题描述】:
我有一个使用这些属性定义的类Person:
private String name;
private String surname;
private Date birthday;
我想在Collection<Person> 中获得最多的生日。
在 Java 7 中,没有外部库,我会这样做:
public Date maxAgeJava7(Collection<Person> persons) {
Date max = null;
for (Person person : persons) {
if (max == null || person.getBirthday().after(max)) {
max = person.getBirthday();
}
}
return max;
}
现在,在 Java 8 中,可以这样写:
public Date maxAgeJava8(Collection<Person> persons) {
return persons.stream().map(Person::getBirthday).max((Date d1, Date d2)-> d1.compareTo(d2)).get();
}
这要好得多但是我不喜欢这部分:
(Date d1, Date d2)-> d1.compareTo(d2)
作为日期implements Comparable,有没有办法告诉Java 使用compareTo() 方法,而不必显式编写它?
【问题讨论】:
标签: java java-8 java-stream