一、基本概念
枚举在Java中是一种特殊的数据类型,它定义了一组预定义常量和值。
用枚举定义常量可以让程序更加易读、易维护、易调试。在一些特定的场合,使用枚举可以有效地避免代码中的一些错误。
在Java中,枚举是通过enum关键字来定义的。
public enum Season { SPRING, SUMMER, AUTUMN, WINTER; }
上面的代码定义的是一个季节的枚举,它包含4个值:SPRING、SUMMER、AUTUMN、WINTER。
二、遍历枚举值
1、使用values()方法
Java编译器会自动为枚举类型添加一个values()方法,它会返回包含枚举所有值的数组。
Season[] seasons = Season.values(); for (Season season : seasons) { System.out.println(season); }
上述代码会打印出以下结果:
SPRING SUMMER AUTUMN WINTER
2、使用foreach循环
通过foreach循环遍历所有的枚举值。
for (Season season : Season.values()) { System.out.println(season); }
同样,以上代码也会输出四个枚举值。
3、使用Stream API
在Java 8之后引入的Stream API可以用于遍历枚举值。
Stream.of(Season.values()).forEach(System.out::println);
上述代码使用Stream API的forEach方法遍历所有枚举值,并打印出来。
三、根据枚举属性过滤枚举值
有时候我们需要根据枚举的某个属性进行过滤,从而得到需要的枚举值。下面介绍两种方法。
1、遍历枚举值,判断属性值
for (Season season : Season.values()) { if (season.name().equals("SPRING")) { System.out.println(season); } }
以上代码可以根据枚举的名称属性值来过滤需要的枚举值,输出结果为:
SPRING
2、使用Stream API过滤属性值
Stream.of(Season.values()) .filter(s -> s.name().equals("SUMMER")) .forEach(System.out::println);
以上代码使用Stream API的filter方法,根据属性值来过滤出需要的枚举值,输出结果如下:
SUMMER
四、总结
以上介绍了三种遍历枚举值的方法,以及两种根据枚举属性值来过滤枚举值的方法。
枚举在Java中的使用非常广泛,这里只是介绍了其中的一小部分用法。希望本文对想要学习枚举的Java开发者有所帮助。