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(向下投票)按钮找到的大空复选标记。还要注意,这是一个无效的方法,因此数据会立即更改。无需重新分配结果。