ArrayList オブジェクトを日付で並べ替える
ArrayList オブジェクト内のデータを整理する場合、アルファベット順ではなく日付に基づいて要素を並べ替える必要がある場合があります。 。この記事では、オブジェクト コンパレータとオンザフライ コンパレータの両方を使用してこれを実現するためのソリューションを説明します。
オブジェクト コンパレータの実装
オブジェクトを日付で比較できるようにするには、カスタム コンパレータを定義します。 Comparable インターフェイスを実装するコンパレータ クラス。このクラス内で、compareTo メソッドをオーバーライドして、2 つのオブジェクトの DateTime オブジェクトを比較します。例:
public static class MyObject implements Comparable<MyObject> { private Date dateTime; public Date getDateTime() { return dateTime; } public void setDateTime(Date datetime) { this.dateTime = datetime; } @Override public int compareTo(MyObject o) { return getDateTime().compareTo(o.getDateTime()); } }
次に、Collections.sort を使用して ArrayList を並べ替えます。
Collections.sort(myList);
オンザフライ コンパレータの作成
場合によっては、オブジェクト モデルの変更が実現できない場合があります。このような場合は、匿名の内部クラスまたはラムダ式を使用してオンザフライ コンパレータを作成します。
Collections.sort(myList, new Comparator<MyObject>() { public int compare(MyObject o1, MyObject o2) { return o1.getDateTime().compareTo(o2.getDateTime()); } });
null 値の処理
安定性を確保するには、コンパレータ内の null 値は、null 値の場合は 0 を返します:
public static class MyObject implements Comparable<MyObject> { private Date dateTime; public Date getDateTime() { return dateTime; } public void setDateTime(Date datetime) { this.dateTime = datetime; } @Override public int compareTo(MyObject o) { if (getDateTime() == null || o.getDateTime() == null) return 0; return getDateTime().compareTo(o.getDateTime()); } }
またはオンザフライ コンパレータ:
Collections.sort(myList, new Comparator<MyObject>() { public int compare(MyObject o1, MyObject o2) { if (o1.getDateTime() == null || o2.getDateTime() == null) return 0; return o1.getDateTime().compareTo(o2.getDateTime()); } });
これらの手法を実装すると、オブジェクト モデルを変更するか、オンザフライ コンパレータを使用するかにかかわらず、日付に基づいて ArrayList オブジェクトを効率的に並べ替えることができます。
以上がJavaでArrayListオブジェクトを日付で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。