EnumSet是专门为枚举类型设计的集合类。
Enum是什么,参考我的另外一篇博客:
http://blog.youkuaiyun.com/genius_zz/article/details/52671061
EnumSet中不允许加入null元素。否则会抛出异常。通过一个示例来演示EnumSet的使用。
enum SeasonEnum {
SPRING,SUMMER,FALL,WINTER;
}
public class EnumSetDemo_01 {
public static void main(String[] args){
//创建一个包含所有SeasonEnum枚举的EnumSet
EnumSet es1 = EnumSet.allOf(SeasonEnum.class);
System.out.println(es1);
//创建一个空的EnumSet
EnumSet es2 = EnumSet.noneOf(SeasonEnum.class);
System.out.println(es2);
es2.add(SeasonEnum.WINTER);
es2.add(SeasonEnum.SPRING);
System.out.println(es2);
//创建一个由指定的枚举类的其中的几个元素组成的EnumSet
EnumSet es3 = EnumSet.of(SeasonEnum.SUMMER,SeasonEnum.WINTER);
System.out.println(es3);
//EnumSet中包含了从SUMMER到WINTER的所有元素
EnumSet es4 = EnumSet.range(SeasonEnum.SUMMER, SeasonEnum.WINTER);
System.out.println(es4);
//创建一个es4一样的EnumSet
EnumSet es5 = EnumSet.complementOf(es4);
}
}
也可以复制一刻Collection集合中的元素到新创建的EnumSet中,但是这个Collection中的元素,要求是属于同一个枚举类的枚举值。否则会发生异常。
public class EnumSetDemo_02 {
public static void main(String[] args){
Collection c = new HashSet();
c.clear();
c.add(SeasonEnum.FALL);
c.add(SeasonEnum.WINTER);
EnumSet enumset = EnumSet.copyOf(c);
System.out.println(enumset);
}
}