旅游网站开发方案百度文库,做音乐网站代码,网页设计素材与效果图,建筑企业资质证书转载自 Java集合之EnumSet EnumSet
EnumSet 是一个专为枚举设计的集合类#xff0c;EnumSet中的所有元素都必须是指定枚举类型的枚举值#xff0c;该枚举类型在创建EnumSet时显式或隐式地指定。
EnumSet的集合元素也是有序的#xff0c;EnumSet以枚举值在Enum类内的定义顺…转载自 Java集合之EnumSet EnumSet
EnumSet 是一个专为枚举设计的集合类EnumSet中的所有元素都必须是指定枚举类型的枚举值该枚举类型在创建EnumSet时显式或隐式地指定。
EnumSet的集合元素也是有序的EnumSet以枚举值在Enum类内的定义顺序来决定集合元素的顺序。EnumSet在内部以位向量的形式存储这种存储形式非常紧凑、高效,因此EnumSet对象占用内存很小而且运行效率很好。尤其是进行批量操作如调用containsAll()和retainAll()方法时如果其参数也是EnumSet集合则该批量操作的执行速度也非常快。EnumSet集合不允许加入null元素如果试图插入null元素EnumSet将抛出NullPointerException异常。EnumSet类没有暴露任何构造器来创建该类的实例程序应该通过它提供的类方法来创建EnumSet对象。如果只是想判断EnumSet是否包含null元素或试图删除null元素都不会抛出异常只是删除操作将返回false因为没有任何null元素被删除。
方法介绍
EnumSet allOf(Class elementType): 创建一个包含指定枚举类里所有枚举值的EnumSet集合。EnumSet complementOf(EnumSet e): 创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合新EnumSet集合包含原EnumSet集合所不包含的、此类枚举类剩下的枚举值即新EnumSet集合和原EnumSet集合的集合元素加起来是该枚举类的所有枚举值。EnumSet copyOf(Collection c): 使用一个普通集合来创建EnumSet集合。EnumSet copyOf(EnumSet e): 创建一个指定EnumSet具有相同元素类型、相同集合元素的EnumSet集合。EnumSet noneOf(Class elementType): 创建一个元素类型为指定枚举类型的空EnumSet。EnumSet of(E first,E…rest): 创建一个包含一个或多个枚举值的EnumSet集合传入的多个枚举值必须属于同一个枚举类。EnumSet range(E from,E to): 创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。
示例代码
package com.collection;import java.util.EnumSet;public class EnumSetTest {public static void main(String[] args) {//1.创建一个包含Session枚举类里所有枚举值的EnumSet集合EnumSet e1 EnumSet.allOf(Session.class);System.out.println(e1);//[SPRING, SUMMER, FAIL, WINTER]//2.创建一个空EnumSetEnumSet e2 EnumSet.noneOf(Session.class);System.out.println(e2);//[]//3. add()空EnumSet集合中添加枚举元素e2.add(Session.SPRING);e2.add(Session.SUMMER);System.out.println(e2);//[SPRING, SUMMER]//4. 以指定枚举值创建EnumSet集合EnumSet e3 EnumSet.of(Session.SPRING,Session.FAIL);System.out.println(e3);//[SPRING, FAIL]//5.创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。EnumSet e4 EnumSet.range(Session.SPRING,Session.FAIL);System.out.println(e4);//[SPRING, SUMMER, FAIL]//6.创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合// 新EnumSet集合包含原EnumSet集合所不包含的枚举值EnumSet e5 EnumSet.complementOf(e4);System.out.println(e5);//[WINTER]}
}//创建一个枚举
enum Session{SPRING,SUMMER,FAIL,WINTER
}
注意
除此之外还可以复制另一个EnumSet集合中的所有元素来创建新的EnumSet集合或者复制另一个Collection集合中的所有元素来创建新的EnumSet集合。
示例
Collection c new HashSet();c.clear();c.add(Session.SPRING);c.add(Session.FAIL);EnumSet e6 EnumSet.copyOf(c);System.out.println(e6);//[SPRING, FAIL]
注意当复制Collection集合中所有元素来创建新的EnumSet集合时要求Collection集合中的所有元素必须是同一个枚举类的枚举值。
错误示例
c.add(Java);e6 EnumSet.copyOf(c);//java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
Things won are done; joy’s soul lies in the doing. 得到即是完结快乐的精髓在于过程。