EnumSet,EnumMap

2020-06-18  本文已影响0人  wsj1211

EnumSet

枚举单参数能参与switch case值判断:

public enum Color {

    YELLOW,
    RED,
    BLUE,
    PURPLE,
    BLACK;

}
public class ColorEnumTest {

    public static void main(String[] args) {
        Color color = Color.BLUE;
        switch (color) {
            case RED:
                System.out.println("红色");
                break;
            case BLUE:
                System.out.println("蓝色");
                break;
            case PURPLE:
                System.out.println("紫色");
                break;
            case BLACK:
                System.out.println("黑色");
                break;
            case YELLOW:
                System.out.println("黄色");
                break;
             default:
                 System.out.println("蓝色");
                 break;
        }
    }

}

测试结果:


image.png

每个枚举类型颜色是该Color类的一个实例对象,该构成方式和单例模式有些类似,故可以用只有一个枚举类型的枚举作为单例模式,而且枚举的构造器由编译器管理安全性十分高,既可以防止反射破解也可以防止反序列破解。

方法

EnumSet.noneOf()方法创建一个空的set ' EnumSet<Color> enumSet = EnumSet.noneOf(Color.class);'
EnumSet.allOf()方法创建一个满的set EnumSet<Color> enumSet = EnumSet.allOf(Color.class);
EnumSet.range() 'EnumSet<Color> enumSet = EnumSet.range(Color.YELLOW,Color.BLUE);
EnumSet.complementOf补集创建set
EnumSet<Color> enumSet = EnumSet.range(Color.YELLOW,Color.BLUE);
        System.out.println(enumSet);
        EnumSet<Color> enumSet1 = EnumSet.complementOf(enumSet);

EnumMap

public class EnumMapTest {

    public static void main(String[] args) {
        EnumMap<Color,String> enumMap = new EnumMap(Color.class);
        enumMap.put(Color.BLACK,"黑色");
        enumMap.put(Color.BLUE,"蓝色");
        System.out.println(enumMap);
        System.out.println(enumMap.get(Color.BLUE));
    }
}

测试结果:


image.png
上一篇 下一篇

猜你喜欢

热点阅读