一つのデータをソートするより、複数条件でソートしたい場合どうすればいいのかメモです。
Collections.sort()を使ってソートします。
ソート条件はComparatorインターフェースの実装クラスで定義します。大小関係でソートされますが、同値の場合ソートされません。同値の時に次の要素でソートする事で複数条件でのソートを実現します。
例としてデータクラスに格納されているorderで比較し昇順にソートし、orderが同じならpointで比較します。
▽データ保持用クラス(Data.java)
public class Data { private String name; private int order; private int point; public Data(String name, int order, int point){ this.name = name; this.order = order; this.point = point; } public String getName(){ return this.name; } public int getOrder(){ return this.order; } public int getPoint(){ return this.point; } }
▽ソート
public void arrayTest(){ ArrayList dataList = new ArrayList(); dataList.add(new Data("data1", 5, 5)); dataList.add(new Data("data2", 1, 6)); dataList.add(new Data("data3", 1, 1)); dataList.add(new Data("data4", 6, 2)); dataList.add(new Data("data5", 1, 2)); dataList.add(new Data("data6", 3, 6)); for(int i=0; i