Java 排序LocalDateTime

Java 排序LocalDateTime,java,sorting,datetime,jodatime,java-time,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;

如何对
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);
比较器比较器=新比较器(){ @凌驾 公共整数比较(最终数据o1,最终数据o2){ 如果(o1.getDate()==null | | o2.getDate()==null) 返回0; 返回o1.getDate().compareTo(o2.getDate()); } }; 集合。排序(注释、比较);
测试后,我认为它是根据日期排序的,但是时间部分(HH:MM:SS)被忽略了吗?

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

Collections.sort(data);
退房并离开。单击此处查看文档。
也许试着在缩进上下功夫,我有点不确定if子句里面是什么。甚至可以尝试在一行之前使用大括号,但这是个人偏好的问题。

有两种方法。 若date属性位于嵌套对象下,则使用比较器,如下所示

public int compare(Object obj1, Object obj2) {
 return obj2.getInnerObj().getLocalDateTime().compareTo(obj1.getInnerObj().getLocalDateTime());  }
如果日期属性位于对象的属性,则

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

请展示一个简短但完整的程序来演示问题-最好遵循Java命名约定。(看起来,
data
是示例代码中类型和变量的名称-这令人难以置信地困惑。)我还建议,如果
getDate()
是一个返回
LocalDateTime
的方法,那么它的名称非常糟糕……数据是ArrayList,对不起,我的bad@AbdullahAsendar如果这个答案解决了你的问题,请接受。点击up vote(向上投票)和down vote(向下投票)按钮找到的大空复选标记。还要注意,这是一个无效的方法,因此数据会立即更改。无需重新分配结果。