Javaで列挙型(Enum)を反復処理する方法を解説
本記事では、Javaで列挙型(Enum)の各要素を反復処理する方法について詳しく解説します。列挙型は、あらかじめ定義された定数の小さな集合を表すデータ型であり、曜日や色など、取りうる値が限られている場合に非常に便利です。
入出力の確認
まず、今回扱うサンプルの入力と出力を見てみましょう。
入力
次のように列挙型の定数が定義されているものとします。
列挙型の定数:red、blue、green、yellow、orange
出力
期待される出力は以下の通りです。
各定数の出力結果: red blue green yellow orange
アルゴリズム
処理の手順は以下の通りです。
ステップ1 – 開始 ステップ2 – red、blue、green、yellow、orange という名前の列挙型定数を宣言する ステップ3 – forループを使用して列挙型の各定数を順に取り出し、表示する ステップ4 – 終了
例1:values() メソッドを使った反復処理
最も基本的な方法は、values() メソッドですべての定数を配列として取得し、拡張forループで1つずつ処理する方法です。
enum Enum {
red, blue, green, yellow, orange;
}
public class Colour {
public static void main(String[] args) {
System.out.println("The values of Enum function are previously defined .");
System.out.println("Accessing each enum constants");
for(Enum colours : Enum.values()) {
System.out.print(colours + "\n");
}
}
}
実行結果
The values of Enum function are previously defined . Accessing each enum constants red blue green yellow orange
例2:EnumSet を使った反復処理
次に、java.util.EnumSet を利用して、曜日を表す列挙型の全定数を出力する例を紹介します。EnumSet は列挙型専用に設計された高性能なコレクションクラスで、すべての定数をまとめて取得したい場合に適しています。
import java.util.EnumSet;
enum Days {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}
public class IterateEnum{
public static void main(String args[]) {
Days my_days[] = Days.values();
System.out.println("Values of the enum are: ");
EnumSet.allOf(Days.class).forEach(day -> System.out.println(day));
}
}
実行結果
Values of the enum are: Sunday Monday Tuesday Wednesday Thursday Friday Saturday
まとめ
Javaで列挙型を反復処理するには、大きく分けて2つの方法があります。values() メソッドと拡張forループを組み合わせる方法、そして EnumSet.allOf() を使ってforEachで処理する方法です。どちらも簡潔に記述できるため、コードの目的や可読性に応じて使い分けるとよいでしょう。
-
正方形の面積を求めるJavaプログラムの書き方【初心者向け解説】
この記事では、Javaを使って正方形の面積を求める方法をわかりやすく解説します。正方形の面積は、次の公式で計算できます。辺 × 辺つまり s2正方形の面積の計算式正方形の1辺の長さを s とすると、その面積は s2(辺の2乗)で表されます。下図のように、縦と横が同じ長さの図形であるため、辺同士を掛け合わせるだけで面積が求まります。入力例1辺の長さ : 4出力例正方形の面積 : 16アルゴリズム処理の流れは以下の手順になります。Step 1 - 開始Step 2 - 整数型の変数 my_side(辺の長さ)と my_area(面積)を宣言するStep 3 - ユーザーから値を読み込む、または値を
-
Javaのenum(列挙型)は拡張・継承できるのか?理由と代替手段を解説
結論:Javaでenumを拡張することはできないいいえ、Javaではenum(列挙型)を拡張(継承)することはできません。Javaのenumは、コンパイル時に暗黙的にjava.lang.Enumクラスを継承します。Javaは単一継承を採用している言語であるため、すでにEnumクラスを継承しているenumが、さらに別のクラスを継承することは構文的に不可能なのです。java.lang.Enumクラスの宣言実際に、JDKにおけるEnumクラスの宣言は以下のようになっています。public abstract class Enum<E extends Enum<E>>