EeBlog(テクニカルブログ)

第5回 ソート(ArrayList)

JavaプログラマーであればArrayListクラスはお馴染みだと思います。
今回はArrayListをソートしてみようと思います。
ArrayListをソートするには「Collections」クラスを使用すると簡単です。
簡単なサンプルですので解説はAPIリファレンスをみて下さい。

public class SortTest {

     public static void main(String[] args) {
         ArrayList list =new ArrayList();

         // 適当に値を代入(10~99までの乱数)
         for (int i = 0; i < 20; i++) {
             Data data = new Data();
             data.a = new Random().nextInt(90) + 10;
             data.b = new Random().nextInt(90) + 10;
             list.add(data);
         }

         // 並び替え前の値を表示
         System.out.println("----- 並び替え前");
         for (Iterator i = list.iterator(); i.hasNext();) {
             Data data = (Data)i.next();
             System.out.println(data.a + ":" + data.b);
         }

         // aで並び替え
         Collections.sort(list, new Comparator() {
             public int compare(Object o1, Object o2) {
                 Data data1 = (Data)o1;
                 Data data2 = (Data)o2;
                 if (data1.a < data2.a) return -1;
                 if (data1.a > data2.a) return 1;
                 return 0;
             }
         });

         // aで並び替え後の値を表示
         System.out.println("----- aで並び替え後");
         for (Iterator i = list.iterator(); i.hasNext();) {
             Data data = (Data)i.next();
             System.out.println(data.a + ":" + data.b);
         }

         // bで並び替え
         Collections.sort(list, new Comparator() {
             public int compare(Object o1, Object o2) {
                 Data data1 = (Data)o1;
                 Data data2 = (Data)o2;
                 if (data1.b < data2.b) return -1;
                 if (data1.b > data2.b) return 1;
                 return 0;
             }
         });

         // bで並び替え後の値を表示
         System.out.println("----- bで並び替え後");
         for (Iterator i = list.iterator(); i.hasNext();) {
             Data data = (Data)i.next();
             System.out.println(data.a + ":" + data.b);
         }

     }

 }
 class Data {
     int a;
     int b;
 }

その内に配列のソートも書きます…..。