- 9月 18,07
- Category :Computers & Internet
久しぶりのプログラミングメモ
今回は、Collectiosの複数のキー(項目)によるソート
あまりよくわかっていないけど、一応出来たのでメモメモ。
おかしいところ等があればコメントくださると修正いたします。
(例は動かしたわけではないので
要はcompareメソッドのif文のところを如何に変更するかなんだけど。
例はデータベースなどから取得したデータをJava側で複数キーでのソート
ex)
public class SortTest {
(略)
public void search() throws Exception {
ArrayList arraylist = new ArrayList();
(略)
//検索結果をbeanに
while(rs.next()){
//検索結果あり
//xxxBeanをインスタンス化
xxxBean bean = new xxxBean();
//beanに検索結果をset
bean.setStrName(rs.getString("Name")); //名前
bean.setStrAge(rs.getString("Age")); //年齢
・
・
・
//リストに検索結果を追加
arraylist.add(bean);
}
//ソートを行う
Collections.sort(arraylist, new MyComparator());
}
}
private static class MyComparator implements Comparator{
//コンストラクタ
public MyComparator() {
super();
}
public boolean equals(Object obj) {
return (super.equals(obj));
}
//ここでソート順を指定する。
public int compare(Object obj1, Object obj2) {
ArrayList list1 = (ArrayList)obj1;
ArrayList list2 = (ArrayList)obj2;
//xxxbeanのでわたってくるとする
xxxBean bean1 = (xxxBean)list1.get(0);
xxxBean bean2 = (xxxBean)list2.get(0);
//名前を取得(キー1)
String name1 = bean1.strName;
String name2 = bean2.strName;
//年齢を取得(キー2)
String age1 = bean1.strAge;
String age2 = bean2.strAge;
if(!name1.eauals(name2)){
return name1.compareTo(name2);
} else {
return age1.compareTo(age2);
}
}
}
こんな感じでできると思いますが。
一応、当方Java1.4のつもりで書いています。
他にもっといいロジックなどあれば教えてもらいたいです。
1.5だともっと楽にできるのかな?
では久しぶりのプログラミングメモはこの辺で\(=ω=.)/
- Newer: みんなのGOLF5 PLAY DIARY
- Older: ONLINE
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://clare-chronicle.net/2007/09/collectios%e3%81%ab%e3%82%88%e3%82%8b%e8%a4%87%e6%95%b0%e3%82%ad%e3%83%bc%e3%81%ab%e3%82%88%e3%82%8b%e3%82%bd%e3%83%bc%e3%83%88/trackback/
- Listed below are links to weblogs that reference
- Collectiosによる複数キーによるソート from Clare Chronicle