1概要

Javaの

Enum

は、定義済みの一連の定数を変数に割り当てるのに役立つデータ型です。

このクイック記事では、Javaで

enum

を反復処理するさまざまな方法について説明します。


2

Enum

値を繰り返し処理する

最初に

enum

クラスを定義しましょう。これは、例で使用します。

public enum DaysOfWeekEnum {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

列挙型には、

forEach()



iterator()

のような反復のためのメソッドはありません。代わりに、定義済みの値を返す

values()

というメソッドがあります。


2.1.

forEach()


を使用して繰り返す


__forEach()









を使用して反復を実行するには、

enum__をリストまたはセットに変換する必要があります。

最初に__EnumSetを使います。

EnumSet.allOf(DaysOfWeekEnum.class)
  .forEach(day -> System.out.println(day));

同様に、

Arrays

を使うことができます。

Arrays.asList(DaysOfWeekEnum.values())
  .forEach(day -> System.out.println(day));

ここで、

EnumSet



Arrays

は、

enum

をそれぞれ

Set



List

に変換します。


2.2.

Stream


を使用して繰り返す

並列集約操作を実行したい場合は、

java.util.stream

を使用することもできます。

繰り返しますが、

Stream

を作成するには、2つのオプションがあります。1つは

Stream.of

を使用する方法です。

Stream.of(DaysOfWeekEnum.values());

もう1つは、

Arrays

を使用したものです。

Arrays.stream(DaysOfWeekEnum.values());

ここで、

values()



Enum

メソッドで、すべての事前定義値を返します。

それでは、

Stream

を使用して例を作成するために

DaysOfWeekEnum

クラスを拡張しましょう。

public enum DaysOfWeekEnum {

    SUNDAY("off"),
    MONDAY("working"),
    TUESDAY("working"),
    WEDNESDAY("working"),
    THURSDAY("working"),
    FRIDAY("working"),
    SATURDAY("off");

    private String typeOfDay;

    DaysOfWeekEnum(String typeOfDay) {
        this.typeOfDay = typeOfDay;
    }

    public static Stream<DaysOfWeekEnum> stream() {
        return Stream.Of(DaysOfWeekEnum.values());
    }
}

それでは、休業日を返す例を書きましょう。

public class EnumStreamExample {

    public static void main() {
        DaysOfWeekEnum.stream()
        .filter(d -> d.getTypeOfDay().equals("off"))
        .forEach(System.out::println);
    }
}

これを実行したときに得られる出力:

SUNDAY
SATURDAY


2.3.

for

ループを使用して繰り返す

最後に、古い学校の

for

ループを使用することができます。

for (DaysOfWeekEnum day : DaysOfWeekEnum.values()) {
    System.out.println(day);
}


3結論