【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()を使う方法があります。可読性や再利用性を考慮して、目的に合った方法を選びましょう。
-
【Python】双方向連結リストから最大値・最小値のノードを検索する方法
双方向連結リスト(Doubly Linked List)から最大値と最小値を求める必要がある場合、まず「Node」クラスを作成します。このクラスには3つの属性を持たせます。ノードが保持するデータ、連結リスト上の次のノードへの参照、そして前のノードへの参照です。以下に具体的な実装例を示します。サンプルコード maximum): maximum = curr.data curr = curr.next return maximum def print_it(self): cur
-
Pythonでリスト内の最大値・最小値の位置を見つける方法
Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最