前回は、自作したクラスの配列をソートしてみました。
今回は、自作したクラスのリストをソートしてみます。
自作したクラスのリストをソートするサンプル
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import java.util.ArrayList; import java.util.Collections; public class SortTest2 { public static void main(String[] args) { ArrayList targetList = new ArrayList(); targetList.add(new SortItem2("001","メロン")); targetList.add(new SortItem2("002","すいか")); targetList.add(new SortItem2("003","りんご")); targetList.add(new SortItem2("004","バナナ")); targetList.add(new SortItem2("005","みかん")); System.out.println("-- ソート前 --"); print(targetList); Collections.sort(targetList); System.out.println("-- ソート後 --"); print(targetList); } private static void print(ArrayList targetList) { for(SortItem2 item : targetList) { System.out.println(item.toString()); } } } class SortItem2 implements Comparable { private String id = null; private String name = null; public SortItem2(String id,String name){ this.id = id; this.name = name; } @Override public int compareTo(SortItem2 arg) { return name.compareTo(arg.name); } @Override public String toString() { return "id:" + id + " name:" + name ; } } |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 | -- ソート前 -- id:001 name:メロン id:002 name:すいか id:003 name:りんご id:004 name:バナナ id:005 name:みかん -- ソート後 -- id:002 name:すいか id:005 name:みかん id:003 name:りんご id:004 name:バナナ id:001 name:メロン |
サンプルの解説
Collections#sort(List)により、簡単にリストをソートすることができます。
渡したリスト自体をいじってしまうため、注意が必要です。
また、前回の配列同様、ソートの評価は、Comparable#compareToに委ねられます。
ちなみに、降順でソートをしたい場合、上記sortメソッドを実行後、さらに以下のメソッドを実行して逆順にすることで、降順の並び替えを行うことができます。
1 | Collections.reverse(targetList); |