- ベストアンサー
Java1.5オブジェクトのソート方法とは?
- Java1.5のオブジェクトのソートについて簡潔に解説します。リスト内のオブジェクトを2つのキーでソートしたい場合、jakarta commonsのクラスを利用することができます。
- 具体的な方法としては、Collections.sortメソッドを使用し、ソート対象のリストとBeanComparatorオブジェクトを引数に指定します。BeanComparatorオブジェクトのコンストラクタには、ソートキーとして使用するフィールド名を指定します。
- ソートキーが1つの場合は、この方法でソートすることができますが、ソートキーが2つの場合はどうすれば良いのか悩んでいました。しかし、commonsのクラスを使用すれば2つのキーを指定してソートすることができます。詳細な操作方法は公式ドキュメントを参照してください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
commons-collection を使うなら、 ComparatorChain が使えます。 ComparatorChain comparator = new ComparatorChain(); comparator.add( new BeanComparator("name") ); comparator.add( new BeanComparator("no") ); Collections.sort( list, comoarator );
その他の回答 (2)
このままじゃちょっとまずいですねー。しょーがない。答えてみるかー。 そーですねー。自分でやるとしたら、java.util.Collectionsクラスのsort()を使いますねー。これは、引数にListを渡して、Listをソートするものですねー。 2つのキーでソートしたい場合は、java.util.Comparatorインターフェースを実装したクラスを用意しますよー。これは、compareメソッドを1つもってて、2つのオブジェクトを比較した結果を返すんですねー。 class MyComparator implements Comparator { public int compare(Object o1,Object o2){……} } こんな感じですねー。このインスタンスを配列と一緒にCollections.sortに渡せば、このcompareを使って2つのオブジェクトを比較し、並べ替えてくれますねー。 なので、独自にComplaratorをimplementsしたクラスを定義して、このcompareで、2つのUserBeanにある2つのフィールドの値に応じて、どういうときにどういう値を返すか、というのを考えて実装することで、2つのキーによるソートが可能になりますよー。詳しくは、ComparatorインターフェースをJavaDocで調べてみるといいですよー。 参考: http://allabout.co.jp/internet/java/closeup/CU20050118E/index2.htm
お礼
まさにこれが知りたい方法でした。勉強になりました。有難う御座います。Commonsって便利ですねぇ~。勉強します