Java中如何遍历自定义枚举类的枚举值
枚举值遍历实现
Java所有枚举类默认内置values()方法,调用该方法会返回按枚举声明顺序排列、包含所有枚举实例的数组,直接遍历该数组即可实现枚举值遍历,无需额外自定义逻辑。
你的枚举类中val属性为私有,需补充对应的getter方法才能在外部访问该属性值,补全后的枚举代码如下:
public enum Colours { RED ("RED"), BLUE ("BLUE"), YELLOW ("YELLOW"), GREEN ("GREEN"); private String val; Colours (String val) { this.val = val; } public String getVal() { return val; } }
常见遍历写法
- 通用for-each写法,兼容所有JDK版本:
public class EnumTraverseTest { public static void main(String[] args) { for (Colours colour : Colours.values()) { // 获取枚举常量名 System.out.println("常量名:" + colour.name()); // 获取绑定的val属性 System.out.println("绑定值:" + colour.getVal()); // 获取枚举声明顺序下标(从0开始计数) System.out.println("顺序下标:" + colour.ordinal()); System.out.println("------"); } } }
遍历输出的顺序和枚举值在代码中声明的顺序完全一致,依次为RED、BLUE、YELLOW、GREEN。
- JDK8及以上版本可以用Stream流遍历,方便后续做过滤、映射等操作:
import java.util.Arrays; public class EnumTraverseTest { public static void main(String[] args) { Arrays.stream(Colours.values()) // 示例:过滤掉值为RED的枚举 .filter(colour -> !"RED".equals(colour.getVal())) .forEach(colour -> System.out.println(colour.getVal())); } }
注意:
values()返回的数组由枚举类内部维护,不要手动修改数组元素,否则会导致枚举状态异常。
内容的提问来源于stack exchange,提问作者Karin
相关产品推荐
相关产品推荐

