Javaでコレクションのソートを行う方法
Javaでは、Collections.sort()メソッドを使用してコレクションをソートできます。Collections.sort()メソッドはList型の引数を受け取り、リストをソートします。
Collections.sort()メソッドを使用して整数のリストをソートするサンプルコードを次に示します。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(8);
numbers.add(1);
Collections.sort(numbers);
System.out.println(numbers); // 输出:[1, 2, 5, 8]
}
}
上記のコードでは、整数型のリスト numbers を作成し、Collections.sortメソッドを使用してソートしています。最後にソートされたリストを出力しています。
Comparableインターフェイスの実装で比較基準を定義し、Collections.sort()メソッドでソートできます。オブジェクトのクラスを変更したくない場合は、Comparatorインターフェイスを使用して比較基準を定義し、それをCollections.sort()メソッドの第2引数として渡します。
Comparatorインターフェイスを使用して文字列リストをソートするサンプルコードを以下に示します。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.add("David");
Collections.sort(names, new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
System.out.println(names); // 输出:[Alice, Bob, Charlie, David]
}
}
上記コードでは、文字列のリスト「names」を作成し、コレクションの「sort」メソッドを使用して並び替えます。比較ルールを定義するために、コンパレータのインターフェイスを実装する匿名内部クラスを作成し、文字列の自然な並び替えのルールを使用するように指定します。最後に、並び替えられたリストを出力します。
なお、上記のサンプルはJava 7 以前の匿名内部クラスの記法であり、Java 8 以降ではラムダ式を使用してより簡潔に記述できる(下記参照)。
Collections.sort(names, (s1, s2) -> s1.compareTo(s2));