Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取列表中最早的日期时间?_Java_List_Sorting_Methods_Collections - Fatal编程技术网

Java 获取列表中最早的日期时间?

Java 获取列表中最早的日期时间?,java,list,sorting,methods,collections,Java,List,Sorting,Methods,Collections,我有一个狗实体的列表,其中包含字段“生日”。 我希望在entity类中有一个只返回列表中最早的DateTime的方法 我怎样才能做到 实体: @Entity @Table(name = "DOG") public class Dog { //some other fields @Column(name = "BIRTHDAY") @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime") pr

我有一个狗
实体的列表,其中包含
字段“生日”。

我希望在entity类中有一个只返回列表中最早的
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;
列表示例:

@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;
private-List-dogList;

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

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

下面是一个没有lambada表达式的示例:

public DateTime findOldestDogsBirthday() {
    Collections.sort(dogList, new Comparator<Dog>() {
        @Override
        public int compare(Dog o1, Dog o2) {
            DateTime d1 = o1.getBirthday();
            DateTime d2 = o2.getBirthday();
            return d1.compareTo(d2);
        }
    });
    return !dogList.isEmpty() ? dogList.get(0).getBirthday() : null;
}
public DateTime findOldestDogsBirthday(){
Collections.sort(dogList,newcomparator(){
@凌驾
公共整数比较(狗o1,狗o2){
DateTime d1=o1.getBirthday();
DateTime d2=o2.getBirthday();
返回d1。比较(d2);
}
});
return!dogList.isEmpty()?dogList.get(0).getBirthday():null;
}

实现可比较的接口。重写compareTo方法。重写equals和hashcode。反向排序列表并获取最上面的元素。请给出this@sidgate这是一个c#答案,这是java@java123999-我已经提供了足够的线索。现在不能做作业:PThanks,我如何在一个方法中返回最早的日期时间?我不明白为什么会有3个。getBirthday方法?@java123999-我已经更新为将其包装在一个方法中。对
getBirthday
的前两个调用位于comparator内,用于执行实际排序。最后一个是从
可选的
中获取生日。可以使用
stream().min(comparing(Dog::getbirth))
更简洁地编写比较器(以及静态导入
compariator.comparing
)。@java123999-该方法返回给定集合中最老的狗的生日(日期)