我有一个包含字段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;
答案 0 :(得分:2)
在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();
答案 1 :(得分:0)
这是一个没有lambada表达式的例子:
^D