Java で列挙値を反復処理する
- Java での列挙型 (列挙型) の簡単な紹介
-
Java で
for
ループを使用して列挙値を反復処理する -
Java で
forEach
ループを使用して列挙値を反復処理する -
java.util.Stream
を使用して列挙値を反復処理する - まとめ
この記事では、Java で列挙型 (列挙型) を反復処理する方法を学習します。
Java での列挙型 (列挙型) の簡単な紹介
Java プログラミング言語では、列挙は定数のグループを表すのに役立ちます。 たとえば、太陽系のさまざまな惑星は、水星、金星、地球、火星、木星などの名前の列挙であり、Planets
という名前の列挙型に属します。
列挙型は、独自のデータ型、つまりユーザー定義のデータ型を定義するために使用されます。
Java では、列挙型は enum
キーワードを使用して宣言されます。 C/C++ とは異なり、メソッド、コンストラクター、および変数を追加できるため、Java 列挙型はより効率的です。
発生する一般的な質問は、いつ、なぜそれらを使用するのかということです。 色、曜日、曜日、惑星の名前など、使用する値が変わらないことがわかっている場合は、列挙型を使用する必要があります。
それでは、列挙型を反復処理するさまざまな方法を見てみましょう。
Java で for
ループを使用して列挙値を反復処理する
Java のすべての列挙型は、java.lang.Enum
クラスを暗黙的に拡張します。 このクラスには、列挙型内のすべての値を返す values()
メソッドが含まれています。
このメソッドを使用して、列挙型の値をループできます。
コード例:
import java.util.*;
public class Example {
public enum Planets {
MERCURY,
VENUS,
EARTH,
MARS,
JUPITER;
}
public static void main(String[] args) {
Planets values[] = Planets.values();
for (Planets obj : values) {
System.out.println(obj + " is the " + obj.ordinal() + " planet in the solar system");
}
}
}
出力:
MERCURY is the 0 planet in the solar system
VENUS is the 1 planet in the solar system
EARTH is the 2 planet in the solar system
MARS is the 3 planet in the solar system
JUPITER is the 4 planet in the solar system
上記のコードでは、デフォルトで値を明示的に指定していないため、列挙定数には 0
から始まる値が割り当てられます。
Java で forEach
ループを使用して列挙値を反復処理する
Java 8 以降、forEach()
メソッドが Iterable
インターフェースに追加されました。 したがって、Java のすべての Collections
クラスには foreach()
メソッドの実装があります。
このメソッドは Enum
で使用できますが、最初に collection
に変換する必要があります。 これを行う一般的な方法の 1つは、java.util.Arrays
クラスの Arrays.asList()
メソッドを使用することです。
このメソッドは、配列のリスト ビューを提供します。
コード例:
import java.util.*;
public class Example {
public enum Planets {
MERCURY,
VENUS,
EARTH,
MARS,
JUPITER;
}
public static void main(String[] args) {
Arrays.asList(Planets.values()).forEach(temp -> System.out.println(temp));
}
}
出力:
MERCURY
VENUS
EARTH
MARS
JUPITER
java.util.Stream
を使用して列挙値を反復処理する
java.util.Stream
を使用して列挙値を反復処理できます。 これを行うには、最初に Stream.of()
メソッドを使用して enum.values()
のストリームを作成します。
enum.values()
をパラメーターとして Stream.of()
関数に渡します。
コード例:
import java.util.stream.*;
public class Example {
public enum Planets {
MERCURY,
VENUS,
EARTH,
MARS,
JUPITER;
}
public static void main(String[] args) {
Stream.of(Planets.values()).forEach(System.out::println);
}
}
出力:
MERCURY
VENUS
EARTH
MARS
JUPITER
まとめ
この記事では、Java で for
ループ、forEach
ループ、および Stream
を使用して列挙型を反復処理するさまざまな方法を説明しました。 これらの方法のいずれかを使用して反復できますが、並列操作を扱う場合は、Stream
の方が適しています。