Java アドバンス

Java Listのソート

1. Java Listのソート

前章では、java.util パッケージに含まれるJavaの代表的な2つのリスト、ArrayListLinkedList について学びました。

同じく java.util パッケージに含まれる便利なクラスに Collectionsクラス があります。このクラスには、リストをアルファベット順や数値順に並べ替えるための sort() メソッドが用意されています。

2. ArrayListのソート

2.1 文字列の昇順ソート

ArrayList に格納された文字列をアルファベット順(昇順)にソートする実装例です。

import java.util.ArrayList;
import java.util.Collections;  // Collectionsクラスをインポート

public class Main {
  public static void main(String[] args) {
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");

    Collections.sort(cars);  // carsをソート

    for (String i : cars) {
      System.out.println(i);
    }
  }
}

2.2 数値の昇順ソート

ArrayList に格納された Integer 型の数値を数値順(昇順)にソートする実装例です。

import java.util.ArrayList;
import java.util.Collections;  // Collectionsクラスをインポート

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> myNumbers = new ArrayList<Integer>();
    myNumbers.add(33);
    myNumbers.add(15);
    myNumbers.add(20);
    myNumbers.add(34);
    myNumbers.add(8);
    myNumbers.add(12);

    Collections.sort(myNumbers);  // myNumbersをソート

    for (int i : myNumbers) {
      System.out.println(i);
    }
  }
}

3. 逆順(降順)のソート

reverseOrder() メソッドを使用することで、リストを逆順(降順)にソートすることも可能です。

3.1 文字列の降順ソート

ArrayList の文字列をアルファベットの逆順でソートします。

import java.util.ArrayList;
import java.util.Collections;  // Collectionsクラスをインポート

public class Main {
  public static void main(String[] args) {
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");

    // reverseOrder()を使用して逆順にソート
    Collections.sort(cars, Collections.reverseOrder()); 

    for (String i : cars) {
      System.out.println(i);
    }
  }
}

3.2 数値の降順ソート

ArrayList の数値を数値の大きい順(降順)にソートします。

import java.util.ArrayList;
import java.util.Collections;  // Collectionsクラスをインポート

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> myNumbers = new ArrayList<Integer>();
    myNumbers.add(33);
    myNumbers.add(15);
    myNumbers.add(20);
    myNumbers.add(34);
    myNumbers.add(8);
    myNumbers.add(12);

    // reverseOrder()を使用して数値の降順にソート
    Collections.sort(myNumbers, Collections.reverseOrder()); 

    for (int i : myNumbers) {
      System.out.println(i);
    }
  }
}