我有一个像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时间手册,但这并没有多大帮助。我如何对数组进行排序?
提前感谢您的帮助
答案 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(而不是像你问题中的两个参数)。