对LocalDateTime进行排序

时间:2015-09-17 08:08:55

标签: java sorting datetime jodatime java-time

如何对LocalDateTime个对象进行排序?

我尝试了以下内容:

Comparator<Data> comparator = new Comparator<Data>() {
    @Override
    public int compare(final data o1, final data o2) {
        if (o1.getDate()== null || o2.getDate() == null)
            return 0;
        return o1.getDate().compareTo(o2.getDate());
    }
};

Collections.sort(comments, comparator);

经过测试,我认为按日期排序,但时间部分(HH:MM:SS)是否被忽略?

3 个答案:

答案 0 :(得分:13)

JodaTime和JDK 8 LocalDateTime类都实现了Comparable接口,因此您可以使用它们的自然顺序对它们进行排序。只是做

Collections.sort(data);

答案 1 :(得分:2)

有两种方法可以做到这一点。 如果date属性位于嵌套对象下,则按如下方式使用比较器

public int compare(Object obj1, Object obj2) {
 return obj2.getInnerObj().getLocalDateTime().compareTo(obj1.getInnerObj().getLocalDateTime());  }

如果date属性位于object的属性上,则

List<Object> sortedList = objectList.stream()
           .sorted(Comparator.comparing(Object :: getLocalDateTime).reversed())
           .collect(Collectors.toList());

答案 2 :(得分:1)

结帐isAfter()isBefore()。点击文档。 也许尝试着你的缩进,我对if子句中的内容有点不确定。也许甚至尝试使用花括号{}甚至是单行,但这是个人偏好的问题。