Java Listのソート
1. Java Listのソート
前章では、java.util パッケージに含まれるJavaの代表的な2つのリスト、ArrayList と LinkedList について学びました。
同じく 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);
}
}
}