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

JavaでEnum(列挙型)の値を反復処理する方法

Javaにおける Enumクラス は、Java言語のすべての列挙型(enumeration types)に共通する基底クラスです。このクラスを継承することで、定数の集合を型安全に扱うことができます。

ここでは、Enumで定義した列挙値を反復処理(イテレーション)する代表的な方法を2つ紹介します。

方法1:forループとvalues()メソッドを使う

もっとも基本的な方法は、values() メソッドで取得した配列を拡張for文で回すやり方です。

public class Demo {
    public enum Vehicle { CAR, BUS, BIKE }
    public static void main(String[] args) {
        for (Vehicle v : Vehicle.values())
            System.out.println(v);
    }
}

実行結果

CAR
BUS
BIKE

values() は、宣言された順序ですべての列挙定数を含む配列を返します。そのため、シンプルなforループでもインデックスを使って処理することが可能です。

方法2:Stream APIとforEachを使う

Java 8以降では、Stream APIを活用してより簡潔に記述することもできます。Stream.of()values() の結果を渡し、forEach() で各要素を出力します。

import java.util.stream.Stream;
public class Demo {
    public enum Work { TABLE, CHAIR, NOTEPAD, PEN, LAPTOP }
    public static void main(String[] args) {
        Stream.of(Work.values()).forEach(System.out::println);
    }
}

実行結果

TABLE
CHAIR
NOTEPAD
PEN
LAPTOP

また、Arrays.stream(Work.values()) を使っても同様の結果が得られます。フィルタリングやマッピングなど、後続のストリーム操作と組み合わせたい場合には、こちらのアプローチが特に有効です。

まとめ

  • values()メソッド:すべての列挙定数を配列として取得できる
  • 拡張for文:シンプルで可読性が高く、基本的な反復処理に最適
  • Stream API:Java 8以降なら、より柔軟で関数型的な処理が可能

用途に応じてこれらの方法を使い分けることで、Enumを効率的に活用できます。

  1. Javaの列挙型(enum)は任意のクラスを拡張できる?継承の仕組みを解説

    Javaの列挙型(enum)とは列挙型(enum)は、Javaにおいて定数の集合を格納するためのデータ型です。1週間の曜日や1年の月名など、固定された値のグループを扱う際に活用されます。列挙型を定義するには、enumキーワードの後に列挙型の名前を続けて記述します。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }配列と同様に、列挙型内の要素(定数)には0から始まる番号が自動的に割り当てられます。上記の例では、各曜日が以下の図のように番号で識別されます。列挙型はクラスとよく似た構造を持ち

  2. Javaでパッケージをコンパイルする方法をわかりやすく解説

    Javaパッケージの作成とコンパイルの基本手順ここでは、「animals」という名前のパッケージを作成する例を通して、Javaにおけるパッケージのコンパイル方法を解説します。なお、パッケージ名はクラス名やインターフェース名との名前の衝突(競合)を避けるため、すべて小文字で命名するのがJavaの一般的な慣習です。1. パッケージ内にインターフェースを定義するまず、animalsパッケージに属する「Animal」というインターフェースを定義します。/* ファイル名 : Animal.java */ package animals; interface Animal {   &n