コース一覧
    Java入門:配列とコレクション
    Collections クラスの便利メソッド

    Java入門:配列とコレクション

    配列とコレクションの扱いを学び、複数のデータを安全に整理・検索・集計できるようにします。

    1
    配列
    01. 配列の基本5分
    02. 配列の要素にアクセス5分
    03. 配列を for で走査5分
    04. Javaで配列の合計・平均を求める方法(forループ)5分
    05. 配列の平均5分
    06. 配列の最大値5分
    07. 配列の線形探索12分
    08. 拡張 for ループ5分
    09. 配列クイズ5分
    10. 第 6 章 まとめクイズ5分
    2
    コレクション基礎
    01. ArrayList を使う5分
    02. List を走査する5分
    03. 要素の削除と検索5分
    04. HashMap の基本5分
    05. Map を走査する5分
    06. Set で重複を排除5分
    07. Collections クラスの便利メソッド5分
    08. コレクション基礎 まとめクイズ5分

    Collections クラスの便利メソッド

    並べ替えを自分で書くと、境界を 1 つ間違える

    リストを昇順にしたいだけなのに、交換用の一時変数と二重ループを書き、添字の範囲を 1 つ間違えて悩む。誰もが一度は通る道ですが、java.util.Collections を使えばこの手の処理は 1 行で終わります。

    Java

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    List<String> names = new ArrayList<>();
    names.add("sato");
    names.add("abe");
    names.add("kudo");

    この names に対して、並べ替えと最大値の取得を呼んでみます。

    Java

    Collections.sort(names);
    System.out.println(names);                   // [abe, kudo, sato]
    System.out.println(Collections.max(names));  // sato

    Collections.sort はその型の標準的な順番、つまり数値なら小さい順、文字列なら辞書順に並べ替えます。Collections.max はその順番でいちばん後ろにあたる要素を返します。Integer String LocalDate のように比べ方が決まっている型なら、そのまま渡すだけです。

    解説

    Collections (s 付き) と Collection (s 無し) は別物です。前者は便利メソッドを集めた道具箱、後者は List や Set の親インタフェースです。

    sort は新しいリストを返さない

    Collections.sort の戻り値は void です。

    Java

    List<String> sorted = Collections.sort(names);  // コンパイルエラー

    並べ替えは、元のリストをその場で書き換える形で行われます。呼んだあとの names がもう並んでいるので、受け取る変数は要りません。並べ替えた結果が返ってくると思い込んでいると、この 1 行で止まります。

    配列のままでは渡せない

    Collections のメソッドは List を受け取ります。Collections.sort(arr) のように int[] を渡してもコンパイルは通りません。ジェネリクスにプリミティブ型は入れられないので、List<int> という型そのものが存在しないからです。

    そのため int[] を扱うときは、まず List<Integer> を用意して中身を 1 つずつ移し替えます。移し終われば、上の例と同じように sort も max も呼べます。

    もう 1 つ気をつけたいのが、空のリストに Collections.max を呼ぶと NoSuchElementException で落ちることです。最大値は要素が 1 つ以上あることが前提なので、空かどうかを先に確かめてから呼びます。課題でも、空の配列が渡されたときの戻り値が別に決められています。順番としては、まず空の場合を片付け、それから詰め替えに進むと迷いません。

    要件

    1. クラス名は Solution、メソッド名は sortAndMax、引数は int[] arr ひとつにすること
    2. 戻り値の型は int で、int[] を List<Integer> に変換してから Collections.sort と Collections.max を使って最大値を返すこと
    3. 配列が空 (arr.length == 0) のときは -1 を返すこと (Collections.max を空リストに呼ぶと例外になるため必ずガードする)

    ヒント

    まず `if (arr.length == 0) return -1;` でガードします。これがないと空リストを `Collections.max` に渡したときに `NoSuchElementException` が飛びます

    `int[]` から `List<Integer>` への変換は `for (int v : arr) list.add(v);` が素直で安全です。`Arrays.asList(arr)` だと `List<int[]>` (要素 1 個のリスト) になってしまうので使わないでください

    `Collections.sort(list)` の戻り値は `void` です。`list = Collections.sort(list);` ではなく、`Collections.sort(list);` と書いて、その後の `list` をそのまま使います

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

    関連レッスン

    • コレクション基礎 まとめクイズ

      コレクション基礎 (List / Map / Set / Collections) の総まとめ。使い分けと内部の仕組みを 4 択クイズで確認する。

    • Set で重複を排除

      Java の Set を使って、コレクションから重複した要素を取り除く方法を学びます。HashSet と LinkedHashSet と TreeSet の違い、Set ならではの API を整理しよう。

    • Map を走査する

      Map をキーと値のペアでループする方法を学ぼう。entrySet / keySet / values の使い分けと、順序を保証する LinkedHashMap の使い方まで身につける。

    • HashMap の基本

      Java の `HashMap` を使って、キーと値のペアを保存し、商品名から価格を引き出すメソッドを作ろう。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • リスト順序付きで複数の値を扱うデータ構造
    • 変数データに名前をつけて参照する仕組み
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 処理計算や代入を表す長方形
    • メソッドクラスに属する関数
    • 戻り値呼び出し元への返答を表す点線矢印
    • 配列サイズ固定の同型データの集まり
    • コンパイルソースをバイトコードへ変換する処理
    main.java
    エディタを読み込んでいます

    メモ

    Collections クラスの便利メソッド

    ⌘S で保存