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

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で処理する方法です。どちらも簡潔に記述できるため、コードの目的や可読性に応じて使い分けるとよいでしょう。


  1. 正方形の面積を求めるJavaプログラムの書き方【初心者向け解説】

    この記事では、Javaを使って正方形の面積を求める方法をわかりやすく解説します。正方形の面積は、次の公式で計算できます。辺 × 辺つまり s2正方形の面積の計算式正方形の1辺の長さを s とすると、その面積は s2(辺の2乗)で表されます。下図のように、縦と横が同じ長さの図形であるため、辺同士を掛け合わせるだけで面積が求まります。入力例1辺の長さ : 4出力例正方形の面積 : 16アルゴリズム処理の流れは以下の手順になります。Step 1 - 開始Step 2 - 整数型の変数 my_side(辺の長さ)と my_area(面積)を宣言するStep 3 - ユーザーから値を読み込む、または値を

  2. 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>>