java枚举类型,为什么强烈推荐使用?看看它的7种场景方法( 三 )

以上程序的执行结果为:

RED
NEW_RED
用法七:使用枚举集合在 Java 语言中和枚举类相关的 , 还有两个枚举集合类 java.util.EnumSet 和 java.util.EnumMap , 使用它们可以实现更多的功能 。
使用 EnumSet 可以保证元素不重复 , 并且能获取指定范围内的元素 , 示例代码如下:
public class EnumTest {    public static void main(String[] args) {        List<ColorEnum> list = new ArrayList<ColorEnum>();        list.add(ColorEnum.RED);        list.add(ColorEnum.RED);  // 重复元素        list.add(ColorEnum.YELLOW);        list.add(ColorEnum.GREEN);        // 去掉重复数据        EnumSet<ColorEnum> enumSet = EnumSet.copyOf(list);        System.out.println("去重:" + enumSet);        // 获取指定范围的枚举(获取所有的失败状态)        EnumSet<ErrorCodeEnum> errorCodeEnums = EnumSet.range(ErrorCodeEnum.ERROR, ErrorCodeEnum.UNKNOWN_ERROR);        System.out.println("所有失败状态:" + errorCodeEnums);    }}enum ColorEnum {    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLOW("黄色", 4);    private String name;    private int index;    private ColorEnum(String name, int index) {        this.name = name;        this.index = index;    }}enum ErrorCodeEnum {    SUCCESS(1000, "success"),    ERROR(2001, "parameter error"),    SYS_ERROR(2002, "system error"),    NAMESPACE_NOT_FOUND(2003, "namespace not found"),    NODE_NOT_EXIST(3002, "node not exist"),    NODE_ALREADY_EXIST(3003, "node already exist"),    UNKNOWN_ERROR(9999, "unknown error");    private int code;    private String msg;    ErrorCodeEnum(int code, String msg) {        this.code = code;        this.msg = msg;    }    public int code() {        return code;    }    public String msg() {        return msg;    }}以上程序的执行结果为:
去重:[RED, GREEN, YELLOW]
所有失败状态:[ERROR, SYS_ERROR, NAMESPACE_NOT_FOUND, NODE_NOT_EXIST, NODE_ALREADY_EXIST, UNKNOWN_ERROR]
numMap 与 HashMap 类似 , 不过它是一个专门为枚举设计的 Map 集合 , 相比 HashMap 来说它的性能更高 , 因为它内部放弃使用链表和红黑树的结构 , 采用数组作为数据存储的结构 。
EnumMap 基本使用示例如下:
public class EnumTest {    public static void main(String[] args) {        EnumMap<ColorEnum, String> enumMap = new EnumMap<>(ColorEnum.class);        enumMap.put(ColorEnum.RED, "红色");        enumMap.put(ColorEnum.GREEN, "绿色");        enumMap.put(ColorEnum.BLANK, "白色");        enumMap.put(ColorEnum.YELLOW, "黄色");        System.out.println(ColorEnum.RED + ":" + enumMap.get(ColorEnum.RED));    }}enum ColorEnum {    RED, GREEN, BLANK, YELLOW;}


推荐阅读