Home > Blog > Computers & Internet > Collectiosによる複数キーによるソート

Collectiosによる複数キーによるソート

久しぶりのプログラミングメモ
  
  今回は、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だともっと楽にできるのかな?
  
  では久しぶりのプログラミングメモはこの辺で\(=ω=.)/

Comments:0

Comment Form
Remember personal info

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

Home > Computers & Internet > Collectiosによる複数キーによるソート

Return to page top