はじめに
独自クラスを使用した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に関してのドキュメントは以下参照
追記
前述の方法では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;
}
参考サイト オープンソースポータル