sort

概要

javaでのソート方法についてまとめます

Collectionsクラスのsortメソッドを利用

java.util.Collections.sort<List list>

このメソッドでは、要素の「自然順位付け」(String ならアルファベット順、int なら数値順)に従って昇順にソートします。
リストの要素は比較可能でなければならない。

java.util.Collections.sort<List list,Conparetor c>

独自のConparetorを渡すことで、並び替えを制御できます~
リストの中にオブジェクトや配列が格納されていた場合、Conparetor.compareをオーバーライドすることで~
配列のどの要素、オブジェクトのどのフィールドを比較対象にするか決めることができる。
Conparetor.compareのの記述は以下のような方法がある。

    • 昇順の場合
 public int compare(list<int> list1 list<int> list2){
  	int num1 = list1.get(2);
     int num2 = list2.get(2);
 
 	if(num1.compareTo(num2) < 0){
 		return -1;
 	} else if(num1.comareTo(num2) > 0){
 		return 1;
 	} else {
 		return 0;
 }
    • 降順の場合
 public int compare(list<int> list1 list<int> list2){
 	int num1 = list1.get(2);
     int num2 = list2.get(2);
 
 	if(num1.compareTo(num2) < 0){
 		return 1;
 	} else if(num1.comareTo(num2) > 0){
 		return -1;
 	} else {
 		return 0;
 }

詳しいサンプルプログラムは下記参考資料参照

参考資料

http://www.kadoppe.net/2008/02/javaarraylist.html

Arraysクラスのsortメソッドを利用

  • 配列をソート

上記Collection.sortと同じソートを実行できる

  • Comparableインタフェース を実装したオブジェクトをソート

上記のようにListの中にオブジェクト等が格納されている場合、どの要素、フィールドを比較対象するかを、
sortメソッドの第2引数であるConparetor.compareメソッドで定義していた
しかし格納されているオブジェクトにComparebleインターフェイスを実装させ、compareTo(object obj1)をオーバーライドさせておくことで、同じことを実現できる。

※詳細なサンプルコードはこちら
http://www.moriwaki.net/wiki/index.php?%5B%5B%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%C7%DB%CE%F3%A4%CE%A5%BD%A1%BC%A5%C8%5D%5D

参考資料

  • Arrays.sort()とインタフェースComparatorを使って多次元配列をソートしてみる

http://asistobe851.hp.infoseek.co.jp/my-memo/sort.html

  • JAVA 開発眼も - オブジェクト配列のソート

http://www.moriwaki.net/wiki/index.php?%5B%5B%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%C7%DB%CE%F3%A4%CE%A5%BD%A1%BC%A5%C8%5D%5D