Javaでコレクション内の要素を比較して最小値・最大値を取得する方法
この記事では、Javaのコレクション(Collection)内の要素を比較し、最小値と最大値を求める方法を解説します。
Collectionフレームワークは、オブジェクトのグループを格納・操作するための統一されたアーキテクチャを提供する仕組みです。検索、ソート、挿入、操作、削除など、データに対して行うあらゆる処理をJava Collectionsで実現できます。
実行結果の例
今回扱うプログラムの動作イメージは以下の通りです。
入力:
Input list: [300, 500, 180, 450, 610]
出力:
Min value of our list : 180 Max value of our list : 610
アルゴリズム
処理の流れは以下のステップになります。
Step 1 - 開始 Step 2 - リスト(input_list)を宣言する Step 3 - 値を定義する Step 4 - Collections.min() と Collections.max() を使って、コレクションの最小値と最大値を取得する Step 5 - 結果を表示する Step 6 - 終了
例1:mainメソッドにすべての処理を記述する方法
まず、すべての操作を「main」メソッド内にまとめて記述するシンプルな例を紹介します。
import java.util.*;
public class Demo {
public static void main(String[] args){
List<Integer> input_list = new ArrayList<>();
input_list.add(300);
input_list.add(500);
input_list.add(180);
input_list.add(450);
input_list.add(610);
System.out.println("The list is defined as: " +input_list);
int minimum_value = Collections.min(input_list);
int maximum_value = Collections.max(input_list);
if (minimum_value == maximum_value) {
System.out.println("All the elements of the list are equal");
}
else {
System.out.println("\nMin value of our list : " + minimum_value);
System.out.println("Max value of our list : " + maximum_value);
}
}
}出力
The list is defined as: [300, 500, 180, 450, 610] Min value of our list : 180 Max value of our list : 610
例2:オブジェクト指向に沿って関数化する方法
次に、処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングのスタイルに沿って記述した例です。処理を再利用しやすくなるため、実務ではこちらの書き方が推奨されます。
import java.util.*;
public class Demo {
static void min_max(List<Integer> input_list){
int minimum_value = Collections.min(input_list);
int maximum_value = Collections.max(input_list);
if (minimum_value == maximum_value) {
System.out.println("All the elements of the list are equal");
}
else {
System.out.println("\nMin value of our list : " + minimum_value);
System.out.println("Max value of our list : " + maximum_value);
}
}
public static void main(String[] args){
List<Integer> input_list = new ArrayList<>();
input_list.add(300);
input_list.add(500);
input_list.add(180);
input_list.add(450);
input_list.add(610);
System.out.println("The list is defined as: " +input_list);
min_max(input_list);
}
}出力
The list is defined as: [300, 500, 180, 450, 610] Min value of our list : 180 Max value of our list : 610
補足:Stream APIを使った別のアプローチ
Java 8以降では、Stream APIを利用して同様の処理をより簡潔に書くこともできます。
import java.util.*;
public class Demo {
public static void main(String[] args){
List<Integer> input_list = Arrays.asList(300, 500, 180, 450, 610);
int minimum_value = input_list.stream().min(Integer::compare).get();
int maximum_value = input_list.stream().max(Integer::compare).get();
System.out.println("Min value of our list : " + minimum_value);
System.out.println("Max value of our list : " + maximum_value);
}
}Collections.min()/max()は最も手軽な標準的な方法であり、Stream APIはフィルタリングやマッピングなど他の処理と組み合わせたい場合に有効です。用途に応じて使い分けるとよいでしょう。
-
JavaのIterator(イテレータ)とCollection(コレクション)の違いと使い方を徹底解説
Javaのコレクションフレームワークにおいて、Iterator(イテレータ)とCollection(コレクション)はデータを扱う上で非常に重要なインターフェースです。本記事では、それぞれの特徴や役割の違いを、実際のコード例とともにわかりやすく解説します。 Iterator(イテレータ)とは Iteratorは、コレクションフレームワーク内で必要なタイミングで要素を1つずつ取り出すために使用されるインターフェースです。 public interface Iterator next()メソッドを使うことで、次の要素へ移動しながらアクセスできます。また、remove()メソッドを使用すれば、データ
-
Javaでリストから重複要素を削除する2つの方法|LinkedHashSetとStream APIのdistinct()
JavaのList(リスト)から重複する要素を削除したい場面は少なくありません。本記事では、代表的な2つの手法――LinkedHashSetを利用する方法と、Stream APIのdistinct()メソッドを利用する方法――を、サンプルコードと実行結果つきでわかりやすく解説します。 方法1: LinkedHashSetを使って重複を削除する LinkedHashSetは、「重複した要素を許さない」かつ「挿入された順序を保持する」という特徴を持つコレクションです。そのため、ListをLinkedHashSetに変換するだけで、元の並び順を保ったまま重複要素を簡単に取り除くことができます。 サン