目前我正在尝试按日期对列表进行排序:
Collections.sort(unsortedDates, new Comparator<Item>() {
public int compare(Item m1, Item m2) {
return m1.getDate().compareTo(m2.getDate());
}
});
但我希望对列表进行排序,以便锚定日期为今天,第一项应该是当前日期的最近日期。
日期格式为MM/dd
。
getDate()
会返回Date
个对象。
答案 0 :(得分:5)
在比较器之外创建今天的日期,并更改比较器以比较它所比较的日期的绝对差异,如下所示:
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);
}
});
答案 1 :(得分:3)
Java 1.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);
}
});
答案 2 :(得分:0)
这家伙的答案与你的代码差不多。也许值得一试。
Sort a List of Objects by Their Date
或者你有这个,但是它使用了一个ArrayList,所以它可能不是你想要的,但有些相似。