完全ガイド!Javaで「sortメソッド」を極める技術
Javaのsortメソッドは、コレクションの要素を自然順序付け順に並べ替えるためのメソッドです。
一見シンプルなこのメソッドも、使いこなせばコードがグッと洗練され、パフォーマンスも向上します。
1.基本的なsortメソッドの使用法
JavaにおけるListインタフェースのsortメソッドは、指定された比較関数に従ってリストの要素をソートします。
使用方法は非常にシンプルで、以下のコード例で確認してみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Arrays; import java.util.List; public class Program { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(5, 3, 8, 1); numbers.sort(null); System.out.println(numbers); } } |
出力結果
[1, 3, 5, 8]
Comparatorを使ったソート
独自の順序付けを行いたい場合は、Comparatorを利用してソートロジックを定義します。
では、実際のコードを見ながら理解を深めていきましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Program { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(5, 3, 8, 1); numbers.sort(Comparator.reverseOrder()); System.out.println(numbers); } } |
出力結果
[8, 5, 3, 1]
2. オブジェクトのリストをソートする
複雑なデータ構造を持つオブジェクトのリストをソートする際には、Comparatorをカスタマイズして使用します。
オブジェクトの特定のフィールドに基づいてソートを行いたい場合にこのテクニックは非常に便利です。
ソースコード例
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 |
import java.util.*; public class Program { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 35) ); people.sort(Comparator.comparingInt(Person::getAge)); System.out.println(people); } } class Person { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } int getAge() { return age; } @Override public String toString() { return name + ": " + age; } } |
出力結果
[Bob: 25, Alice: 30, Charlie: 35]
3. Stream APIを利用したソート
Java 8からは、Stream APIを使用してソートを行うことも可能です。
Stream APIを利用すると、データを一時的なものとしてストリーム化し、様々な処理をパイプラインとして連結できるため、非常に関数プログラミングっぽい書き方ができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.*; import java.util.stream.Collectors; public class Program { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David"); List<String> sortedNames = names.stream() .sorted() .collect(Collectors.toList()); System.out.println(sortedNames); } } |
出力結果
[Alice, Bob, Charlie, David]
まとめ
今回はJavaの「sortメソッド」の基本的な使用法から、Comparatorを使ったカスタムソート、さらにはStream APIを使ったソートまで、幅広く見てきました。
これらのテクニックを活かして、データのソート処理をもっとスマートに、もっと効率的に行っていきましょう!