Javaでのカスタムコンパレータを使用した配列のソート方法


メソッドを使用して配列をソートすることができます。カスタムコンパレータ(Comparator)を使用すると、配列の要素を特定の方法で比較してソートすることができます。以下に、いくつかの方法とコード例を示します。

  1. 数値の昇順でソートする場合:

    import java.util.Arrays;
    import java.util.Comparator;
    public class Main {
       public static void main(String[] args) {
           Integer[] array = {5, 3, 1, 4, 2};
           Arrays.sort(array, Comparator.naturalOrder());
           System.out.println(Arrays.toString(array));
       }
    }
  2. 数値の降順でソートする場合:

    import java.util.Arrays;
    import java.util.Comparator;
    public class Main {
       public static void main(String[] args) {
           Integer[] array = {5, 3, 1, 4, 2};
           Arrays.sort(array, Comparator.reverseOrder());
           System.out.println(Arrays.toString(array));
       }
    }
  3. 文字列の長さでソートする場合:

    import java.util.Arrays;
    import java.util.Comparator;
    public class Main {
       public static void main(String[] args) {
           String[] array = {"apple", "banana", "cherry", "date"};
           Arrays.sort(array, Comparator.comparing(String::length));
           System.out.println(Arrays.toString(array));
       }
    }
  4. オブジェクトの特定のフィールドでソートする場合:

    import java.util.Arrays;
    import java.util.Comparator;
    public class Person {
       private String name;
       private int age;
       public Person(String name, int age) {
           this.name = name;
           this.age = age;
       }
       public String getName() {
           return name;
       }
       public int getAge() {
           return age;
       }
       @Override
       public String toString() {
           return "Person{" +
                   "name='" + name + '\'' +
                   ", age=" + age +
                   '}';
       }
    }
    public class Main {
       public static void main(String[] args) {
           Person[] array = {
               new Person("Alice", 25),
               new Person("Bob", 30),
               new Person("Charlie", 20)
           };
           Arrays.sort(array, Comparator.comparing(Person::getName));
           System.out.println(Arrays.toString(array));
       }
    }

これらはいくつかの例ですが、カスタムコンパレータを使用して配列をソートする方法の一部です。具体的な要件に応じてカスタマイズすることもできます。