我有一个狗Entities列表,其中包含字段"Birthday".

我想在实体类中有一个仅返回列表中最旧的DateTime的方法。

我该怎么办?

实体:

@Entity
@Table(name = "DOG")
public class Dog
{

//some other fields

@Column(name = "BIRTHDAY")
    @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
    private DateTime birthday;


清单示例:

private List<Dog> dogList;

最佳答案

在Java 8中,使用流和lambda创建比较器,然后从Optional获取生日:

public static DateTime getOldestDogsBirthday(final Collection<? extends Dog> dogs) {
    return dogs.stream().min((d1, d2) -> d1.getBirthday().compareTo(d2.getBirthday())).get().getBirthday();
}


更新:基于注释的建议,甚至更简洁的示例使用getBirthday作为传递给Comparator.comparing的方法引用:

return dogs.stream().min(Comparator.comparing(Dog::getBirthday)).get().getBirthday();

10-04 11:36