1

個人オブジェクトのコレクションを生年月日でソートする必要があるため、次の pojo を作成しました。

    public class Person implements Comparable<Person> {

    private long id;
    private String name;
    private Date birthDate;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }

    @Override
    public int compareTo(Person person) {
        if (getBirthDate() == null || person.getBirthDate() == null)
            return 0;
        return getBirthDate().compareTo(person.getBirthDate());
    }
}

これで生年月日を並べ替えることができますが、追加の要件として、生年月日が今日に最も近いものを昇順に並べ替える必要があります。たとえば、今日が 10 月 11 日の場合、例として誕生日が並べ替えられます。

10月20
日 11月5日
1月3日…

その年は比較対象の一部であるため、私が現在持っている方法では、日付は最も古い年から最近の年まで表示されています。

これらの生年月日を年なしで並べ替えるにはどうすればよいですか?

4

3 に答える 3

2

コンパレータを書く

年を含む Persons の比較演算子と、それを除外する別の比較演算子を指定できます。

次のように呼び出して、リストを並べ替える必要があります。

Collections.sort(list, new BirthdayWithoutYearComparatr());
于 2013-10-11T20:54:44.360 に答える