ホームページ >Java >&#&チュートリアル >JavaでArrayListオブジェクトを日付で並べ替えるにはどうすればよいですか?

JavaでArrayListオブジェクトを日付で並べ替えるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-07 19:14:13409ブラウズ

How to Sort ArrayList Objects by Date in Java?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。