我正在尝试按最早的日期排序名为dbDatas的对象列表
[请原谅我收到日期d1和d2的错综复杂的方式,这就是我的课程设置方式]
我在使用Collections.sort进行排序时发现了许多示例,但我无法判断它们是否会先在列表中排序较早的日期,或者稍后在列表中排序。问题是,d1.before(d2)给出的返回值为-1,将较早的日期放在第一位?这可能看起来很简单,但我只是找不到答案。谢谢。
private List<dbData> sortDBDataByDate(List<dbData> dbDatas, final String columnDate) {
Collections.sort(dbDatas,new Comparator<com.mycompany.dudesmyreminders.dbData>() {
@Override
public int compare(dbData lhs, dbData rhs) {
Date d1 = Utility.getDateFromString("M d yyyy", lhs.getMappedColumnValue(columnDate));
Date d2 = Utility.getDateFromString("M d yyyy", rhs.getMappedColumnValue(columnDate));
if (d1.before(d2))
return -1;
else if (d1.equals(d2))
return 0;
else
return 1;
}
});
return dbDatas;
}
答案 0 :(得分:2)
是的,如果d1在d2之前,那么返回-1是正确的。您可以将if / else if / else块简化为:
return d1.compareTo(d2);
假设d1和d2不为空
答案 1 :(得分:1)
是。 Collections.sort按升序排序。 “升序”的含义由您的比较方法定义。负数表示lhs出现在rhs之前,0表示相等,正数表示lhs出现在rhs之后。
这在比较器文档中有详细说明,在测试中也很明显。
顺便说一下,你也可以返回d1.compareTo(d2),因为Date已经实现了。
答案 2 :(得分:-1)
目前尚不清楚你的问题是什么。你在问你是否应该提升日期?那么答案当然取决于你的申请。您是否在询问您的代码是否按日期排序?嗯,是的,因为如果日期是&#34;之前&#34;另一个你指定它更小。如果您的问题是集合排序是否升序?然后答案是肯定的,这是有充分证据的。