カテゴリ: Javaの配列 更新日: 2025/04/28

Java の配列をソートする「Arrays.sort()」の使い方

101
Java の配列をソートする「Arrays.sort()」の使い方

新人と先輩の会話形式で理解しよう

新人

「Java で配列を並び替えるにはどうすればいいですか?」

先輩

「Java では Arrays.sort() を使うと簡単に配列をソートできるよ!」

新人

「それは便利ですね!でも、どうやって使えばいいんですか?」

先輩

「では、基本的な使い方から見ていこう!」

1. Java の配列とは?(基本的な説明)

1. Java の配列とは?(基本的な説明)
1. Java の配列とは?(基本的な説明)

Java の配列とは、同じ種類のデータをまとめて管理できる仕組みです。例えば、テストの点数を保存するときに、配列を使うと便利です。

配列の基本的な宣言方法


public class ArrayExample {
    public static void main(String[] args) {
        // 5つの整数を格納する配列を作成
        int[] numbers = {40, 10, 30, 20, 50};

        // 配列の中身を表示
        System.out.println("配列の中身:");
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

配列の中身:
40 10 30 20 50

2. 配列のソートとは?(基本概念)

2. 配列のソートとは?(基本概念)
2. 配列のソートとは?(基本概念)

配列のソートとは、配列の要素を昇順や降順に並び替えることを指します。Java では、Arrays.sort() メソッドを使うことで、簡単にソートができます。

配列の並び替えが必要な理由

  • ✔ データを見やすく整理する
  • ✔ 検索を高速にする
  • ✔ アルゴリズムの処理を効率化する

配列の並び替えの種類

  • ✔ 昇順(小さい順に並び替える)
  • ✔ 降順(大きい順に並び替える)

次の章では、Arrays.sort() を使って配列を並び替える方法を解説します。

3. Arrays.sort() を使った基本的なソート方法

3. Arrays.sort() を使った基本的なソート方法
3. Arrays.sort() を使った基本的なソート方法

Java で配列を並び替えるには、Arrays.sort() メソッドを使います。このメソッドを使うと、配列を昇順(小さい順)にソートすることができます。

基本的な使い方

まず、Arrays.sort() を使って整数の配列を並び替えてみましょう。


import java.util.Arrays;

public class SortExample {
    public static void main(String[] args) {
        // ソート前の配列
        int[] numbers = {50, 20, 40, 10, 30};

        // 配列をソート
        Arrays.sort(numbers);

        // ソート後の結果を表示
        System.out.println("ソート後の配列:");
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

ソート後の配列:
10 20 30 40 50

このように、Arrays.sort() を実行すると、自動的に配列が昇順に並び替えられます。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 昇順・降順でソートする方法

4. 昇順・降順でソートする方法
4. 昇順・降順でソートする方法

デフォルトの Arrays.sort() では昇順にソートされますが、降順(大きい順)に並び替えたい場合は、Integer クラスと Comparator を使います。

降順にソートする方法

以下のコードでは、Integer クラスを使って降順にソートします。


import java.util.Arrays;
import java.util.Collections;

public class SortDescending {
    public static void main(String[] args) {
        // ソート前の配列(ラッパークラス Integer を使用)
        Integer[] numbers = {50, 20, 40, 10, 30};

        // 降順にソート
        Arrays.sort(numbers, Collections.reverseOrder());

        // ソート後の結果を表示
        System.out.println("降順ソート後の配列:");
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

降順ソート後の配列:
50 40 30 20 10

注意点として、降順ソートを行う場合は int[] ではなく Integer[](ラッパークラス)を使用する必要があります。

5. 文字列の配列をソートする方法

5. 文字列の配列をソートする方法
5. 文字列の配列をソートする方法

数値だけでなく、文字列の配列も Arrays.sort() を使ってソートできます。文字列の場合、アルファベット順(辞書順)に並び替えられます。

文字列をソートする例

以下のコードでは、名前のリストをソートしています。


import java.util.Arrays;

public class StringSortExample {
    public static void main(String[] args) {
        // ソート前の文字列配列
        String[] names = {"Sato", "Tanaka", "Kobayashi", "Yamada", "Abe"};

        // 文字列を昇順にソート
        Arrays.sort(names);

        // ソート後の結果を表示
        System.out.println("文字列の昇順ソート:");
        for (String name : names) {
            System.out.print(name + " ");
        }
    }
}

文字列の昇順ソート:
Abe Kobayashi Sato Tanaka Yamada

このように、文字列も Arrays.sort() を使うことで簡単にソートできます。

文字列を降順にソートする方法

文字列を降順にソートする場合は、Collections.reverseOrder() を使います。


import java.util.Arrays;
import java.util.Collections;

public class StringSortDescending {
    public static void main(String[] args) {
        // ソート前の文字列配列
        String[] names = {"Sato", "Tanaka", "Kobayashi", "Yamada", "Abe"};

        // 文字列を降順にソート
        Arrays.sort(names, Collections.reverseOrder());

        // ソート後の結果を表示
        System.out.println("文字列の降順ソート:");
        for (String name : names) {
            System.out.print(name + " ");
        }
    }
}

文字列の降順ソート:
Yamada Tanaka Sato Kobayashi Abe

このように、Arrays.sort() と <

6. カスタムソート(Comparator を使う方法)

6. カスタムソート(Comparator を使う方法)
6. カスタムソート(Comparator を使う方法)

Java の Arrays.sort() を使うと、基本的な昇順・降順のソートができますが、独自のルールでソートしたい場合は Comparator を使います。

Comparator を使ったカスタムソート

たとえば、数値の配列を「偶数を優先して昇順に並び替える」ようなルールでソートすることができます。


import java.util.Arrays;
import java.util.Comparator;

public class CustomSortExample {
    public static void main(String[] args) {
        Integer[] numbers = {5, 8, 3, 10, 1, 6};

        // カスタムソート: 偶数を優先し、同じ種類の数値は昇順
        Arrays.sort(numbers, new Comparator<Integer>() {
            @Override
            public int compare(Integer a, Integer b) {
                if (a % 2 == 0 && b % 2 != 0) {
                    return -1; // 偶数を優先
                } else if (a % 2 != 0 && b % 2 == 0) {
                    return 1; // 奇数を後に
                }
                return a - b; // 昇順
            }
        });

        // 結果の表示
        System.out.println("カスタムソート後の配列:");
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

カスタムソート後の配列:
6 8 10 1 3 5

このように、Comparator を使うことで、独自のルールでソートを行うことができます。

7. 多次元配列のソート方法

7. 多次元配列のソート方法
7. 多次元配列のソート方法

2次元配列(多次元配列)をソートする場合も、Arrays.sort() を使うことができます。

例えば、「各行の2番目の要素を基準にソートする」方法を見てみましょう。


import java.util.Arrays;
import java.util.Comparator;

public class MultiDimArraySort {
    public static void main(String[] args) {
        int[][] data = {
            {1, 5},
            {3, 2},
            {2, 8},
            {4, 1}
        };

        // 2列目(インデックス 1)の値を基準にソート
        Arrays.sort(data, Comparator.comparingInt(arr -> arr[1]));

        // 結果の表示
        System.out.println("多次元配列のソート後:");
        for (int[] row : data) {
            System.out.println(Arrays.toString(row));
        }
    }
}

多次元配列のソート後:
[4, 1]
[3, 2]
[1, 5]
[2, 8]

このように、Comparator を活用すると、多次元配列も簡単にソートできます。

8. 練習問題:「配列を並び替えるコードを書こう」

8. 練習問題:「配列を並び替えるコードを書こう」
8. 練習問題:「配列を並び替えるコードを書こう」

最後に、学んだことを活かして、配列を並び替えるコードを書いてみましょう。

問題 1: 昇順ソート

次の整数配列を Arrays.sort() を使って昇順に並び替えるコードを書いてください。


int[] numbers = {15, 3, 8, 21, 5};

問題 2: 降順ソート

次の配列を Collections.reverseOrder() を使って降順に並び替えてください。


Integer[] numbers = {12, 45, 23, 9, 33};

問題 3: 文字列のソート

次の文字列配列を昇順(アルファベット順)にソートしてください。


String[] words = {"banana", "apple", "cherry", "date"};

解答


import java.util.Arrays;
import java.util.Collections;

public class SortingPractice {
    public static void main(String[] args) {
        // 問題 1: 昇順ソート
        int[] numbers1 = {15, 3, 8, 21, 5};
        Arrays.sort(numbers1);
        System.out.println("昇順ソート: " + Arrays.toString(numbers1));

        // 問題 2: 降順ソート
        Integer[] numbers2 = {12, 45, 23, 9, 33};
        Arrays.sort(numbers2, Collections.reverseOrder());
        System.out.println("降順ソート: " + Arrays.toString(numbers2));

        // 問題 3: 文字列のソート
        String[] words = {"banana", "apple", "cherry", "date"};
        Arrays.sort(words);
        System.out.println("文字列の昇順ソート: " + Arrays.toString(words));
    }
}

昇順ソート: [3, 5, 8, 15, 21]
降順ソート: [45, 33, 23, 12, 9]
文字列の昇順ソート: [apple, banana, cherry, date]

このコードを実行して、正しくソートできるか確認してみましょう。

Javaの配列の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク