Java 当第一个日期是今天时,按日期对列表排序
目前我正在尝试按日期对列表排序:Java 当第一个日期是今天时,按日期对列表排序,java,Java,目前我正在尝试按日期对列表排序: Collections.sort(unsortedDates, new Comparator<Item>() { public int compare(Item m1, Item m2) { return m1.getDate().compareTo(m2.getDate()); } }); 但是我想对列表进行排序,以便锚定日期是今天,第一项应该是当前日期的最近日期 日期格式为MM/dd getDate返回一个日期对
Collections.sort(unsortedDates, new Comparator<Item>() {
public int compare(Item m1, Item m2) {
return m1.getDate().compareTo(m2.getDate());
}
});
但是我想对列表进行排序,以便锚定日期是今天,第一项应该是当前日期的最近日期
日期格式为MM/dd
getDate返回一个日期对象。在比较器之外创建今天的日期,并将比较器更改为比较它所比较的日期的绝对差异,如下所示:
final long todayTime = new Date().getTime();
Collections.sort(unsortedDates, new Comparator<Item>() {
public int compare(Item m1, Item m2) {
long dist1 = Math.abs(todayTime-m1.getDate().getTime());
long dist2 = Math.abs(todayTime-m2.getDate().getTime());
return Long.compare(dist1, dist2);
}
});
Java1.5+自动装箱的代码
final long current = (new Date()).getTime();
Collections.sort(unsortedDates, new Comparator<Item>() {
public int compare(Item m1, Item m2) {
Long m1diff = Math.abs(m1.getDate().getTime() - current);
Long m2diff = Math.abs(m2.getDate().getTime() - current);
return m1diff.compareTo(m2diff);
}
});
这家伙的答案和你的密码差不多。也许值得一看 或者你有这个,但是它使用了一个ArrayList,所以它可能不是你想要的,但是有点类似
什么类型的日期?一根绳子?日期对象?过去日期的预期行为是什么?过去日期应该是最晚的。它对日期进行排序,使第一个日期为12/12,最后一个日期为1/1。@user1940676在Long调用中交换dist1和dist2。比较以颠倒顺序。它仍然不是从8/18开始,但是从1/1开始,676年一定是另一年的1/1。是否要忽略年份部分?