LoginSignup
16
20

More than 5 years have passed since last update.

ArrayListの並べ替え

Last updated at Posted at 2014-07-02

はじめに

独自クラスを使用したArrayListの並べ替えを使ったのでメモ。
  
まずは今回使ったデータクラス

MydDta
public class MyData{
    String url;
    String title;
    String contents;
    String type;
    java.util.Date date;

    public MyData(String url, String title, String contents, String type, java.util.Date date){
        this.url = url;
        this.title = title;
        this.contents = contents;
        this.type = type;
        this.date = date;
    }

    public String getUrl() {
        return url;
    }

    public String getTitle(){
        return title;
    }
    public String getContents(){
        return contents;
    }
    public String getType(){
        return type;
    }
    public java.util.Date getDate(){
        return date;
    }
}

今回はこのMydataクラスを用いたArrayList<MyData> mydata をDataの順に並べ替えていく。
ArrayListの並べ替え方法について調べたら「Collectionsを使用すると並べ替えをすることができる」との記述があったので試してみた。

SortFunction
private static ArrayList<MyData> SortMyData(ArrayList<MyData> mydata){
        Collections.sort(mydata/*並べ替えするオブジェクト*/, new Comparator<MyData/*使用する独自クラス*/>() {
            public int compare(MyData o1, MyData o2) {
                if (o1.getDate() == null || o2.getDate() == null)
                    return 0;
                return o1.getDate().compareTo(o2.getDate())/*二つのデータオブジェクトの比較*/;
            }
        });
        return mydata;
}

このようにするとarraylistの並べ替えができる。

Collctionsに関してのドキュメントは以下参照

Android 公式ドキュメント

追記

前述の方法ではDateオブジェクトの値が小さい順に並べ替えされる。
逆順にしたい場合などは以下のように値を返し値を自分でいじれば良い

    private static ArrayList<MyData> SortMyData(ArrayList<MyData> mydata){
        Collections.sort(mydata, new Comparator<MyData>() {
            public int compare(MyData o1, MyData o2) {
                if (o1.getDate() == null || o2.getDate() == null)
                    return 0;
                if(o1.getDate().getTime() > o2.getDate().getTime())
                    return -1;
                if(o1.getDate().getTime() < o2.getDate().getTime())
                    return 1;
                return o1.getDate().compareTo(o2.getDate());
            }
        });
        return mydata;
    }

参考サイト オープンソースポータル

16
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
20