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

use*_*676 0 java

目前我正在尝试按日期排序我的列表:

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

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

日期格式是MM/dd.

getDate()返回一个Date对象.

das*_*ght 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);
    }
});
Run Code Online (Sandbox Code Playgroud)