在列表中获取最旧的DateTime?

时间:2016-04-21 09:27:02

标签: java list sorting methods collections

我有一个包含字段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;

2 个答案:

答案 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