Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】リストから最小値と最大値を取得する方法

この記事では、Javaのリスト(List)から最小値と最大値を取得する方法を、実際に動くサンプルコードとともにわかりやすく解説します。

Listは要素を順番に格納できる順序付きコレクションで、インデックスを指定して要素の挿入・更新・削除・検索を行えます。また、重複した要素を保持することも可能です。

実行結果のイメージ

今回作成するプログラムの入力と出力は以下のとおりです。

入力:

Input list: [500, 650, 300, 250, 110]

出力:

リストの最小値: 110
リストの最大値: 650

処理の流れ(アルゴリズム)

Step 1 - 処理を開始する
Step 2 - リスト(input_list)を宣言する
Step 3 - リストに値を追加する
Step 4 - Collections.sort() でリストを昇順にソートする
Step 5 - ソート後の先頭要素が最小値、末尾要素が最大値となる
        (リストが空の場合は Integer.MAX_VALUE / Integer.MIN_VALUE を返す)
Step 6 - 結果を表示する
Step 7 - 処理を終了する

例1: mainメソッド内にすべて記述する方法

まずは、すべての処理をmainメソッド内にまとめて記述するシンプルな例です。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        System.out.println("必要なパッケージがインポートされました");
        List<Integer> input_list = new ArrayList<>();
        input_list.add(500);
        input_list.add(650);
        input_list.add(300);
        input_list.add(250);
        input_list.add(110);
        System.out.println("リストの内容: " + input_list);

        // 元のリストをコピーしてソート
        List<Integer> sortedlist = new ArrayList<>(input_list);
        Collections.sort(sortedlist);

        // 最小値の取得(空リストの場合は Integer.MAX_VALUE を表示)
        if (sortedlist == null || sortedlist.size() == 0) {
            System.out.println("\nリストの最小値: " + Integer.MAX_VALUE);
        }
        System.out.println("\nリストの最小値: " + sortedlist.get(0));

        // 最大値の取得(空リストの場合は Integer.MIN_VALUE を表示)
        if (sortedlist == null || sortedlist.size() == 0) {
            System.out.println("リストの最大値: " + Integer.MIN_VALUE);
            return;
        }
        int list_size = sortedlist.size() - 1;
        System.out.println("リストの最大値: " + sortedlist.get(list_size));
    }
}

実行結果

必要なパッケージがインポートされました
リストの内容: [500, 650, 300, 250, 110]

リストの最小値: 110
リストの最大値: 650

例2: メソッドに分割したオブジェクト指向的な実装

次に、最小値・最大値を取得する処理を独立したメソッドとして切り出し、再利用しやすい形にした例です。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Demo {
    // 最小値を取得するメソッド
    public static Integer get_min_value(List<Integer> sortedlist) {
        if (sortedlist == null || sortedlist.size() == 0) {
            return Integer.MAX_VALUE;
        }
        return sortedlist.get(0);
    }

    // 最大値を取得するメソッド
    public static Integer get_max_value(List<Integer> sortedlist) {
        if (sortedlist == null || sortedlist.size() == 0) {
            return Integer.MIN_VALUE;
        }
        int list_size = sortedlist.size() - 1;
        return sortedlist.get(list_size);
    }

    public static void main(String[] args) {
        System.out.println("必要なパッケージがインポートされました");
        List<Integer> input_list = new ArrayList<>();
        input_list.add(500);
        input_list.add(650);
        input_list.add(300);
        input_list.add(250);
        input_list.add(110);
        System.out.println("リストの内容: " + input_list);

        List<Integer> sortedlist = new ArrayList<>(input_list);
        Collections.sort(sortedlist);

        System.out.println("\nリストの最小値: " + get_min_value(sortedlist));
        System.out.println("リストの最大値: " + get_max_value(sortedlist));
    }
}

実行結果

必要なパッケージがインポートされました
リストの内容: [500, 650, 300, 250, 110]

リストの最小値: 110
リストの最大値: 650

補足: Collections.min() / Collections.max() を使うともっと簡単

実は、Java標準ライブラリのCollectionsクラスには、ソート不要で最小値・最大値を直接取得できる便利なメソッドが用意されています。

int min = Collections.min(input_list); // 最小値
int max = Collections.max(input_list); // 最大値

この方法なら1行で取得できるため、実務でもよく使われています。ただし、リストが空の場合はNoSuchElementExceptionがスローされるため、呼び出し前に空チェックを行うのが安全です。

まとめ

リストの最小値・最大値を取得するには、Collections.sort()でソートしてから先頭・末尾の要素を参照する方法と、Collections.min() / Collections.max()を使う方法があります。可読性や再利用性を考慮して、目的に合った方法を選びましょう。

  1. 【Python】双方向連結リストから最大値・最小値のノードを検索する方法

    双方向連結リスト(Doubly Linked List)から最大値と最小値を求める必要がある場合、まず「Node」クラスを作成します。このクラスには3つの属性を持たせます。ノードが保持するデータ、連結リスト上の次のノードへの参照、そして前のノードへの参照です。以下に具体的な実装例を示します。サンプルコード maximum): maximum = curr.data curr = curr.next return maximum def print_it(self): cur

  2. Pythonでリスト内の最大値・最小値の位置を見つける方法

    Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最