Listの要素を独自のルールでソートするサンプルです。
サンプルソース
手順としては、データクラスとソートの条件を記述したComparatorサブクラスを、Collections.sortメソッドに渡す流れになります。
例)要素(SyainClass)のSyainNoの昇順でソートする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class SyainClass { private int syainNo; //社員番号 private String syainName; //社員名 //コンストラクタ public SyainClass(int syainNo, String syainName) { this.syainNo = syainNo; this.syainName = syainName; } //社員番号取得 public int getSyainNo(){ return this.syainNo; } //社員名取得 public String getSyainName(){ return this.syainName; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.util.Comparator; public class SyainComparator implements Comparator<SyainClass> { //比較メソッド(データクラスを比較して-1, 0, 1を返すように記述する) public int compare(SyainClass a, SyainClass b) { int no1 = a.getSyainNo(); int no2 = b.getSyainNo(); //社員番号の昇順でソートする指定 if (no1 > no2) { return 1; } else if (no1 == no2) { return 0; } else { return -1; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.util.ArrayList; import java.util.Iterator; import java.util.Collections; public class ComparatorSortSample { public static void main(String args[]) { //ArrayListを生成する ArrayList<SyainClass> al = new ArrayList<SyainClass>(); //Integer型の数値を追加する al.add(new SyainClass(1, "太郎")); al.add(new SyainClass(5, "次郎")); al.add(new SyainClass(3, "三郎")); al.add(new SyainClass(9, "四郎")); al.add(new SyainClass(7, "五郎")); //SyainComparatorクラスの条件に従いソートする Collections.sort(al, new SyainComparator()); //結果を画面表示する Iterator<SyainClass> it = al.iterator(); while (it.hasNext()) { SyainClass data = it.next(); System.out.println(data.getSyainNo() + ":" + data.getSyainName()); } } } |
- (結果)
- C:\>java ComparatorSortSample 1:太郎 3:三郎 5:次郎 7:五郎 9:四郎
備考
- java.util.Collectionsクラスの詳細は、以下記事をご覧ください。
⇒ [API] java-util-collections