平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【Java】配列の要素を昇順、降順に並びかえる!

テーマ

配列の要素を昇順、降順に並びかえるArrays.sortメソッドの使い方を 記載します。

目次

  • 昇順に並べる
  • 降順に並べる
  • Arrays.sortメソッド詳細
  • reverseOrderメソッド詳細
    • int型を扱う際の注意点
  • まとめ

昇順に並べる

Arrays.sortを使って、昇順に並べる。 文字列の配列をアルファベット順に並べています。

package test;
import java.util.Arrays;

public class Test{
    public static void main(String[] args) {
       String[] array ={"D","B","A","C","E"};
       Arrays.sort(array);

       for(String i: array) {
           System.out.println(i);
       }
     }
}

// 出力
A
B
C
D
E

降順に並べる

続いて降順に並べます。Arrays.sortはデフォルトでは昇順に並びますので
CollectionsクラスのreverseOrderメソッドを使用します。
詳しい使い方は後述します。

package test;
import java.util.Arrays;
import java.util.Collections;

public class Test{
    public static void main(String[] args) {
       String[] array ={"D","B","A","C","E"};
       Arrays.sort(array,Collections.reverseOrder());

       for(String i: array) {
           System.out.println(i);
       }
     }
}
// 出力
E
D
C
B
A

Arrays.sortメソッド詳細

Arrays.sortメソッドと降順時に使用したreverseOrderメソッドについて 確認します。

まずArrays.sortについてです。前述したコードの通りですが
引数に並びかえる配列を代入すればOKです。
例では文字列のString型にしましたが、int型の数値でも動作します。 ※java.utilのCollectionsクラスをインポートすることも忘れずに

import java.util.Collections  
Arrays.sort(並びかえる配列)

Arrays (Java Platform SE 8)

しかし説明した通り、Arrays.sortだとデフォルトで昇順に並び変えられる   ため、降順に並びかえる際は追加のメソッドが必要です。
そこで出てくるのが後述するreverseOrderメソッドです。

reverseOrderメソッド詳細

使用方法は簡単でArrays.sortメソッドの第2引数にメソッドを追加します。

Arrays.sort(並びかえる配列,Collections.reverseOrder())

Collections (Java Platform SE 6)

int型を扱う際の注意点

実はint型の配列に対してreverseOrderメソッドを使用しようとすると 以下のコンパイルエラーが表示されます。

型 Arrays のメソッド sort(int[]) は引数 (int[], Collections.reverseOrder()) に適用できません

前述した参考URLも文字列を例にとっている ことからそもそも文字列に対してしか適用できないようです。 と思っていたのですが、どうやら配列をInteger型にすれば適用可能です。

package test;
import java.util.Arrays;
import java.util.Collections;

public class Test{
    public static void main(String[] args) {
       Integer[] array ={3,2,1,5,4};
       Arrays.sort(array,Collections.reverseOrder());

       for(int i: array) {
           System.out.println(i);
       }
     }
}

// 出力結果
5
4
3
2
1

なぜ使用できるかは理解不足で説明ができないのですが
認識はしておきましょう。

まとめ

配列の要素を昇順、降順に並びかえる方法についてまとめた よく使用する処理なので、理解しておく