Javaにおけるソート技術

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

ソートはコンピュータサイエンスにおいて重要な操作であり、Java はさまざまなデータ構造をソートするためのさまざまな組み込みメソッドを提供しています。Java には、さまざまなデータ構造をソートするためのさまざまなクラスが用意されています。この実験では、配列、コレクション、およびユーザー定義クラスのインスタンスのソートを検討します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/sorting("Sorting") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashmap("HashMap") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashset("HashSet") subgraph Lab Skills java/arrays -.-> lab-117987{{"Javaにおけるソート技術"}} java/arrays_methods -.-> lab-117987{{"Javaにおけるソート技術"}} java/sorting -.-> lab-117987{{"Javaにおけるソート技術"}} java/collections_methods -.-> lab-117987{{"Javaにおけるソート技術"}} java/arraylist -.-> lab-117987{{"Javaにおけるソート技術"}} java/hashmap -.-> lab-117987{{"Javaにおけるソート技術"}} java/hashset -.-> lab-117987{{"Javaにおけるソート技術"}} end

配列のソート

配列は、同じ種類のデータを順序付けて格納するために使用される単純なデータ構造です。Arrays クラスの組み込みの sort() メソッドを使用して配列をソートすることができます。

次のコードは、sort() メソッドを使用して配列をソートする方法を示しています。

public static void main(String[] args) {
    int[] arr = {7, 9, 1, 0, 2, 5, 6, 11};
    System.out.println("Array Before Sorting: " + Arrays.toString(arr));
    Arrays.sort(arr);
    System.out.println("Array After Sorting: " + Arrays.toString(arr));
}

このコードを実行するには、ターミナルで ~/project ディレクトリに移動し、次のコマンドを実行します。

$ javac Sorting.java
$ java Sorting

このコードは、配列を昇順にソートします。配列を降順にソートする場合は、Comparator インターフェイスを使用してソートする必要があります。

コレクションのソート

Java は、Collections クラスを提供しており、このクラスには、リスト、セット、マップなどのコレクションをソートするための sort() メソッドがあります。この関数の動作モデルは、Arrays クラスの sort() メソッドと似ています。

次のコードは、sort() メソッドを使用して整数のリストをソートする方法を示しています。

public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    list.add(6);
    list.add(3);
    list.add(8);
    list.add(1);
    list.add(9);

    System.out.println("List before sorting: " + list);

    Collections.sort(list);
    System.out.println("List after sorting: " + list);
}

このコードを実行するには、ターミナルで ~/project ディレクトリに移動し、次のコマンドを実行します。

$ javac Sorting.java
$ java Sorting

セットのソート

セットは、重複なしで順序なしのデータを格納するために使用されます。Collections クラスの sort() メソッドを使用してセットを直接ソートすることはできません。ただし、セットのすべての要素をリストに転送してからリストをソートすることで、順序付きのデータを表示することができます。

次のコードは、sort() メソッドを使用して整数のセットをソートする方法を示しています。

public static void main(String[] args) {
    Set<Integer> set = new HashSet<Integer>();
    set.add(6);
    set.add(3);
    set.add(-2);
    set.add(1);
    set.add(9);

    List<Integer> list = new ArrayList<Integer>(set);
    Collections.sort(list);
    System.out.println("Set after sorting: " + list);
}

このコードを実行するには、ターミナルで ~/project ディレクトリに移動し、次のコマンドを実行します。

$ javac Sorting.java
$ java Sorting

このコードの出力は、ソートされた整数のリストになります。

マップのソート

マップは、キーと値のペアを格納するために使用されます。マップをキーまたは値に基づいてソートすることができます。TreeMap を使用して、キーと値のペアをソートされた順序で格納することもできます。

次のコードは、sort() メソッドを使用して整数のマップをソートする方法を示しています。

public static void main(String[] args) {
    Map<Integer, String> map = new TreeMap<Integer, String>();
    map.put(6, "Apple");
    map.put(3, "Banana");
    map.put(1, "Mango");
    map.put(9, "Orange");

    System.out.println("Map before sorting: " + map);

    // キーでソート
    Map<Integer, String> sortedByKeyMap = new TreeMap<Integer, String>(map);
    System.out.println("Map after sorting by keys: " + sortedByKeyMap);

    // 値でソート
    List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(map.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
        public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
            return (o1.getValue()).compareTo(o2.getValue());
        }
    });

    Map<Integer, String> sortedByValueMap = new LinkedHashMap<Integer, String>();
    for (Map.Entry<Integer, String> entry : list) {
        sortedByValueMap.put(entry.getKey(), entry.getValue());
    }
    System.out.println("Map after sorting by values: " + sortedByValueMap);
}

このコードを実行するには、ターミナルで ~/project ディレクトリに移動し、次のコマンドを実行します。

$ javac Sorting.java
$ java Sorting

このコードは、マップをキーと値に基づいてソートします。

まとめ

この実験では、Java で異なるデータ構造をソートする方法を示しました。配列、コレクション、およびマップをソートする方法を学びました。また、Comparable および Comparator インターフェイスを使用してユーザー定義クラスのオブジェクトをソートする方法も学びました。Collections および Arrays クラスの sort() メソッドを使用して、リストと配列をソートしました。最後に、マップを値とキーに基づいてソートする方法を学びました。