0

現在、リストを日付でソートしようとしています:

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

しかし、アンカーの日付が今日になるようにリストをソートしたいので、最初の項目は現在の日付に最も近い日付にする必要があります。

日付形式はMM/dd.

getDate()オブジェクトを返しDateます。

4

3 に答える 3

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);
    }
});
于 2013-08-18T14:40:51.033 に答える
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);
    }
});
于 2013-08-18T14:41:06.063 に答える
0

この男は、彼の答えであなたとほとんど同じコードを持っています。多分チェックアウトする価値があります。

オブジェクトのリストを日付順に並べ替える

または、これがありますが、ArrayList を使用しているため、探しているものではないかもしれませんが、多少似ています。

ArrayList 内のオブジェクトを日付で並べ替える

于 2013-08-18T14:41:35.403 に答える