我有一个狗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();