• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:★Java1.5 オブジェクトのソートについて ソートキーを2つ指定する方法★)

Java1.5オブジェクトのソート方法とは?

このQ&Aのポイント
  • Java1.5のオブジェクトのソートについて簡潔に解説します。リスト内のオブジェクトを2つのキーでソートしたい場合、jakarta commonsのクラスを利用することができます。
  • 具体的な方法としては、Collections.sortメソッドを使用し、ソート対象のリストとBeanComparatorオブジェクトを引数に指定します。BeanComparatorオブジェクトのコンストラクタには、ソートキーとして使用するフィールド名を指定します。
  • ソートキーが1つの場合は、この方法でソートすることができますが、ソートキーが2つの場合はどうすれば良いのか悩んでいました。しかし、commonsのクラスを使用すれば2つのキーを指定してソートすることができます。詳細な操作方法は公式ドキュメントを参照してください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#115336
noname#115336
回答No.3

commons-collection を使うなら、 ComparatorChain が使えます。 ComparatorChain comparator = new ComparatorChain(); comparator.add( new BeanComparator("name") ); comparator.add( new BeanComparator("no") ); Collections.sort( list, comoarator );

参考URL:
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/comparators/ComparatorChain.html
Humi_Sap
質問者

お礼

まさにこれが知りたい方法でした。勉強になりました。有難う御座います。Commonsって便利ですねぇ~。勉強します

その他の回答 (2)

noname#120325
noname#120325
回答No.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

noname#140925
noname#140925
回答No.1

関連するQ&A