如何对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)是否被忽略?
答案 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子句中的内容有点不确定。也许甚至尝试使用花括号{}甚至是单行,但这是个人偏好的问题。