按第一个日期为今天的日期排序

时间:2013-08-18 14:35:18

标签: java

目前我正在尝试按日期对列表进行排序:

Collections.sort(unsortedDates, new Comparator<Item>() {
    public int compare(Item m1, Item m2) {
        return m1.getDate().compareTo(m2.getDate());
    }
});

但我希望对列表进行排序,以便锚定日期为今天,第一项应该是当前日期的最近日期。

日期格式为MM/dd

getDate()会返回Date个对象。

3 个答案:

答案 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,所以它可能不是你想要的,但有些相似。

Sort Objects in ArrayList by Date