如何迭代Java枚举?


Java Enum是一种特殊的数据类型,它提供了一个特性来定义一组预定义的常量。在这篇文章中,我们将讨论迭代 Java Enum 的不同方法 。枚举可以包含常量、方法等。

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

以下是在 Java 中遍历 Enum 的几个选项:
  1. 使用 for 循环迭代 Enum。
    for(Day day : Day.values()){         System.out.println("Day is :"+ day.name());  }
  2. 使用 Java Stream API 进行迭代:
    Stream.of(Day.values())      .forEach(System.out::println);Arrays.stream(Day.values())      .forEach(System.out::println);
    更复杂的我们可以使用Java 8 steam 和 lambda来迭代枚举并根据需求过滤结果:
    public enum LanguageEnum {       JAVA("1"),    C("2") ,   SCALA("3"),   PYTHON("4");   String selectedLanguage;   LanguageEnum(String selectedLanguage) {        this.selectedLanguage = selectedLanguage;    }}public class LanguageExample {    public static void main(String[] args) {       Arrays.stream(LanguageEnum.values())            .filter(l -> l.selectedLanguage.equals("1"))            .forEach(System.out::println);    }}
  3. 迭代枚举 forEach()

为了使用f orEach()循环,我们需要将enum转换为 java 列表或集合。
  • 要将Enum 转换为 set,请使用EnumSet 。它是用于enum类型的专用 Set 实现。
  • 要将枚举转换为列表,我们可以使用Arrays.asList()方法。

 public static void main(String[] args) {
    
    //convert enum to set and use forEach loop
    EnumSet.allOf(Day.class)
            .forEach(day-> System.out.println(
"day is "+day));
 }

 
//convert Enum to list and use for each loop.
  public static void main(String[] args) {
     Arrays.asList(Day.values())
           .forEach(day -> System.out.println(
"day is " +day));
  }


本文的源代码可在我们的GitHub 存储库中找到