EnumSet是专门为枚举类涉及的集合类
-
EnumSet的所有元素都必须是指定枚举类型的枚举值
-
EnumSet的集合元素是有序的()由枚举类的定义顺序决定存储顺序
-
EnumSet在内部采用位向量形式存储–存储紧凑、高效,占用内存小、运行效率高,适合批量操作
-
EnumSet不允许添加重复元素,如果添加重复值,则会将上一次的值覆盖
-
不允许添加null,如果添加null,则会报空指针异常NullPointerException
@Test
public void EnumSetTest(){
EnumSet enumSet =EnumSet.allOf(TestEnumSet.class);
// enumSet.add(TestEnumSet.class);//非法,这里只能添加一个元素,如果将整个枚举类放入,则存放的是地址值
enumSet.add(TestEnumSet.Spring);//无法添加重复值
for (Object o : enumSet) {
System.out.println("enumSet:"+o);
}
// enumSet.add(null);//NullPointerException
//创建一个空的集合
EnumSet enumSet1=EnumSet.noneOf(TestEnumSet.class);
for (Object o : enumSet1) {
System.out.println("enumSet1:"+o);
}
//以指定枚举值创建集合
EnumSet enumSet2=EnumSet.of(TestEnumSet.Spring,TestEnumSet.Winter,TestEnumSet.Summer);
for (Object o : enumSet2) {
System.out.println("enumSet2:"+o);
}
//创建一个集合enumSet3,不包含enumSet2集合元素的其他元素集合
EnumSet enumSet3=EnumSet.complementOf(enumSet2);
for (Object o : enumSet3) {
System.out.println("enumSet3:" + o);
}
//复制Collection集合中的元素到EnumSet中---必须保证 Collection中添加的值都必须是枚举值
Collection c=new HashSet();
c.add(TestEnumSet.Spring);
c.add(TestEnumSet.Winter);
c.add(TestEnumSet.Summer);
// c.add("123");//java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
EnumSet enumSet4=EnumSet.copyOf(c);
for (Object o : enumSet4) {
System.out.println("enumSet4:" + o);
}
//复制枚举集合A到枚举集合B
EnumSet enumSet5=EnumSet.copyOf(enumSet4);
for (Object o : enumSet5) {
System.out.println("enumSet5:" + o);
}
}