【Java】配列やListをソートする方法について
はじめに
Javaで「配列」や「List」を扱う上でソート(並び替え)を行う場合があるかと思います。 本記事では、配列のソートとListのソートについて解説していきます。
配列のソート
Javaで配列を昇順でソートするにはArrarsクラスのsortメソッドを使用します。 Arrarsクラスのsortメソッドは以下の形式で使用することが可能です。
2.
3. Arrays.sort(配列名);
「java.util.Arrays」をインポートしないと使用できない為、必ずインポートは行いましょう。 またArrays.sort()の戻り値は「void」です。 引数の配列を昇順にソートした配列に上書きを行います。 元の配列を後続処理で使用する場合は元の配列をあらかじめコピーするなどしておいて下さい。 また、降順で並び替えを行いたい場合、CollectionsクラスのreverseOrderメソッドをsortメソッドの第2引数で指定します。 記述方法は下記の通りです。
2. import java.util.Collections;
3.
4. Arrays.sort(配列名, Collections.reverseOrder());
reverseOrderメソッドは順序を逆にする「コンパレータ」を返します。 コンパレータとは比較処理を行うクラスの為のインターフェースになります。 Collectionsクラスを使用する場合、ソートする配列には「Integer型」などクラス型を指定する必要があります。 「int型」などの「プリミティブ型」を指定するとエラーが発生するので注意が必要です。
昇順でソートする場合のサンプルコード
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. }
実行結果
2. 9
3. 25
4. 50
5. 111
6. 250
降順でソートする場合のサンプルコード
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. }
実行結果
2. 100
3. 50
4. 33
5. 12
6. 7
上記のサンプルコードではCollectionsクラスを使用するため、配列の宣言時の型をint型ではエラーとなる為、 クラス型のInteger型で宣言します。 降順でソートする際は、Arraysクラスのsortメソッドの第2引数はCollectionsクラスのreverseOrderメソッドの指定を行います。
Listのソート
List型のオブジェクトの要素をソートする際は、Collectionsクラスのsortメソッドを使用し、下記の通りに記述を行います。
降順で並び替えるにはsortメソッドの第2引数にCollectionsクラスのreverseOrderメソッドを指定し下記の通りに記述します。
昇順でソートする場合のサンプルコード
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. }
実行結果
降順でソートする場合のサンプルコード
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. }
実行結果
まとめ
いかがでしたでしょうか。ソート方法はいくつか種類があり少々複雑ですが使用方法、使用すればすぐに使いこなせるようになるでしょう。ご興味がある方は一度ご使用してみてください。