支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 【Java】配列やListをソートす

はじめに

Javaで「配列」や「List」を扱う上でソート(並び替え)を行う場合があるかと思います。 本記事では、配列のソートとListのソートについて解説していきます。

配列のソート

Javaで配列を昇順でソートするにはArrarsクラスのsortメソッドを使用します。 Arrarsクラスのsortメソッドは以下の形式で使用することが可能です。

1. import java.util.Arrays;
2. 
3. Arrays.sort(配列名);

「java.util.Arrays」をインポートしないと使用できない為、必ずインポートは行いましょう。 またArrays.sort()の戻り値は「void」です。 引数の配列を昇順にソートした配列に上書きを行います。 元の配列を後続処理で使用する場合は元の配列をあらかじめコピーするなどしておいて下さい。 また、降順で並び替えを行いたい場合、CollectionsクラスのreverseOrderメソッドをsortメソッドの第2引数で指定します。 記述方法は下記の通りです。

1. import java.util.Arrays;
2. import java.util.Collections;
3. 
4. Arrays.sort(配列名, Collections.reverseOrder());

reverseOrderメソッドは順序を逆にする「コンパレータ」を返します。 コンパレータとは比較処理を行うクラスの為のインターフェースになります。 Collectionsクラスを使用する場合、ソートする配列には「Integer型」などクラス型を指定する必要があります。 「int型」などの「プリミティブ型」を指定するとエラーが発生するので注意が必要です。

昇順でソートする場合のサンプルコード

1. import java.util.Arrays;
2. 
3. public class Sample01 {
4. 
5.   public static void main(String[] args) {
6.     int[] num01 = {1, 25, 50, 250, 111, 9};
7. 
8.     Arrays.sort(num01);
9. 
10.     for(int i : num01) {
11.       System.out.println(i);
12.     }
13.  }
14. 
15. }

実行結果

1. 1
2. 9
3. 25
4. 50
5. 111
6. 250

降順でソートする場合のサンプルコード

1. import java.util.Arrays;
2. import java.util.Collections;
3. 
4. public class Sample02 {
5. 
6.    public static void main(String[] args) {
7.      Integer[] num02 = {100, 350, 50, 12, 7, 33};
8. 
9.      Arrays.sort(num02, Collections.reverseOrder());
10. 
11.     System.out.println(Arrays.asList(num02));
12.    }
13. 
14. }

実行結果

1. 350
2. 100
3. 50
4. 33
5. 12
6. 7

上記のサンプルコードではCollectionsクラスを使用するため、配列の宣言時の型をint型ではエラーとなる為、 クラス型のInteger型で宣言します。 降順でソートする際は、Arraysクラスのsortメソッドの第2引数はCollectionsクラスのreverseOrderメソッドの指定を行います。

Listのソート

List型のオブジェクトの要素をソートする際は、Collectionsクラスのsortメソッドを使用し、下記の通りに記述を行います。

1. Collections.sort(リスト名);

降順で並び替えるにはsortメソッドの第2引数にCollectionsクラスのreverseOrderメソッドを指定し下記の通りに記述します。

1. Collections.sort(リスト名, Collections.reverseOrder());

昇順でソートする場合のサンプルコード

1. import java.util.ArrayList;
2. import java.util.Collections;
3. 
4. public class Sample03 {
5. 
6.    public static void main(String[] args) {
7.      ArrayList<Integer> num03 = new ArrayList<>();
8. 
9.      num03.add(20);
10.      num03.add(55);
11.      num03.add(7);
12.      num03.add(99);
13.      num03.add(13);
14.      num03.add(69);
15. 
16.      Collections.sort(num03);
17. 
18.      System.out.println(num03);
19.    }
20. 
21. }

実行結果

1. [7, 13, 20, 55, 69, 99]

降順でソートする場合のサンプルコード

1. import java.util.ArrayList;
2. import java.util.Collections;
3. 
4. public class Sample04 {
5. 
6.    public static void main(String[] args) {
7.      ArrayList<Integer> num04 = new ArrayList<>();
8. 
9.      num03.add(20);
10.      num03.add(55);
11.      num03.add(7);
12.      num03.add(99);
13.      num03.add(13);
14.      num03.add(69);
15. 
16.      Collections.sort(num04, Collections.reverseOrder());
17. 
18.      System.out.println(num03);
19.    }
20. 
21. }

実行結果

1. [99, 69, 55, 20, 13, 7]

まとめ

いかがでしたでしょうか。ソート方法はいくつか種類があり少々複雑ですが使用方法、使用すればすぐに使いこなせるようになるでしょう。ご興味がある方は一度ご使用してみてください。