Javaでカスタムコンパレータを使用してリストをソートする方法


  1. Comparableインターフェースを実装する方法: Comparableインターフェースを実装してオブジェクトを比較可能にすることで、リストの要素をソートできます。以下は例です。

    import java.util.*;
    public class CustomComparatorExample {
       public static void main(String[] args) {
           List<String> list = new ArrayList<>();
           list.add("Apple");
           list.add("Banana");
           list.add("Orange");
           Collections.sort(list); // デフォルトの自然順序でソート
           System.out.println("ソート後のリスト: " + list);
       }
    }
  2. Comparatorインターフェースを使用する方法: Comparatorインターフェースを実装し、カスタムコンパレータを作成することで、リストの要素を独自の順序でソートできます。以下は例です。

    import java.util.*;
    public class CustomComparatorExample {
       public static void main(String[] args) {
           List<String> list = new ArrayList<>();
           list.add("Apple");
           list.add("Banana");
           list.add("Orange");
           // 長さでソートするカスタムコンパレータ
           Comparator<String> lengthComparator = new Comparator<String>() {
               @Override
               public int compare(String s1, String s2) {
                   return Integer.compare(s1.length(), s2.length());
               }
           };
           Collections.sort(list, lengthComparator);
           System.out.println("ソート後のリスト: " + list);
       }
    }
  3. ラムダ式を使用する方法: Java 8以降では、ラムダ式を使用して簡潔なカスタムコンパレータを作成できます。以下は例です。

    import java.util.*;
    public class CustomComparatorExample {
       public static void main(String[] args) {
           List<String> list = new ArrayList<>();
           list.add("Apple");
           list.add("Banana");
           list.add("Orange");
           // 長さでソートするカスタムコンパレータ
           Comparator<String> lengthComparator = (s1, s2) -> Integer.compare(s1.length(), s2.length());
           Collections.sort(list, lengthComparator);
           System.out.println("ソート後のリスト: " + list);
       }
    }

これらの方法を使用することで、Javaでカスタムコンパレータを使用してリストをソートすることができます。ご参考までに、上記の例では文字列の長さでソートしていますが、要件に応じてカスタムコンパレータの実装を変更することができます。