Joda DateTime数组按日期时间排序

时间:2016-11-20 10:44:24

标签: sorting datetime arraylist jodatime comparator

我有一个像Joda DateTimes这样的arraylist:

List <DateTime> nextRemindersArray = new ArrayList<DateTime>();
nextRemindersArray.add(reminderOneDateTime);
nextRemindersArray.add(reminderTwoDateTime);
nextRemindersArray.add(reminderThreeDateTime);

我试图按升序排序日期,但我遇到了麻烦:

我用Google搜索并找到了这个页面:

https://cmsoftwaretech.wordpress.com/2015/07/19/sort-date-with-timezone-format-using-joda-time/

我试过这样:

nextRemindersArray.sort(nextRemindersArray);

但它给了我错误:

Error:(1496, 37) error: incompatible types: List<DateTime> cannot be converted to Comparator<? super DateTime>

然后我尝试了这样:

DateTimeComparator dateTimeComparator = DateTimeComparator.getInstance();
nextRemindersArray.sort(nextRemindersArray, dateTimeComparator);

也是这样的:

nextRemindersArray.sort(nextRemindersArray, new DateTimeComparator());

但都有错误。

我尝试了Joda时间手册,但这并没有多大帮助。我如何对数组进行排序?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您正在寻找的是:

nextRemindersArray.sort(DateTimeComparator.getInstance());

但是因为DateTime已经实现了Comparable,所以你真的不需要比较器,只需使用:

nextRemindersArray.sort(null); //uses natural sorting
//or probably more readable
Collections.sort(nextRemindersArray);

请注意,快速查看the documentation of List::sort会告诉您该方法只需要一个参数,而且它必须是一个Comparator(而不是像你问题中的两个参数)。