Collections#sort
手順をスキップできTreeSet
ます。重複を削除してエントリを並べ替えます。つまり、基本的には1行の操作です。
Set<Date> sortedWithoutDupes = new TreeSet<Date> (yourList);
日付がオブジェクトのフィールドである場合、次のいずれかを実行できます。
- オブジェクトにComparableを実装させ、日付に基づいてオブジェクトを比較します
- または
Comparator<YourObject>
、オブジェクトを日付で並べ替えるTreeSetコンストラクターに引数としてaを渡します。
どちらの場合も、リストを事前に並べ替える必要はありません。
重要な注意点:
TreeSetはcompareTo
キーを比較するために使用します。したがって、2つのキーの日付が同じで名前が異なる場合は、compareまたはcompareToメソッドが0以外の値を返すことを確認する必要があります。そうでない場合、2つのオブジェクトは等しいと見なされ、1つだけが挿入されます。
編集
コードは次のようになります(テストされていません+ nullを処理する必要があります):
Comparator<Metadata> comparator = new Comparator<Metadata>() {
@Override
public int compare(Metadata o1, Metadata o2) {
if (o1.sourceDate.equals(o2.sourceDate)) {
return o1.name.compareTo(o2.name);
} else {
return o1.sourceDate.compareTo(o2.sourceDate);
}
}
};
Set<Metadata> sortedWithoutDupes = new TreeSet<Metadata> (comparator);
sortedWithoutDupes.addAll(yourList);