EnumSet的几个例子_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > EnumSet的几个例子

EnumSet的几个例子

 2014/11/14 19:06:37  MouseLearnJava  程序员俱乐部  我要评论(0)
  • 摘要:EnumSet是一个与枚举类型一起使用的专用Set实现。枚举set中所有元素都必须来自单个枚举类型(即必须是同类型,且该类型是Enum的子类)。枚举类型在创建set时显式或隐式地指定。枚举set在内部表示为位向量。此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,足以用作传统上基于int的“位标志”的替换形式,具有高品质、类型安全的优势。Enumset是个虚类,我们只能通过它提供的静态方法来返回Enumset的实现类的实例。返回EnumSet的两种不同的实现
  • 标签:例子

EnumSet?是一个与枚举类型一起使用的专用?Set?实现。枚举set中所有元素都必须来自单个枚举类型(即必须是同类型,且该类型是Enum的子类)。
?枚举类型在创建?set?时显式或隐式地指定。枚举?set?在内部表示为位向量。?此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,
足以用作传统上基于?int?的“位标志”的替换形式,具有高品质、类型安全的优势。

Enumset是个虚类,我们只能通过它提供的静态方法来返回Enumset的实现类的实例。 返回EnumSet的两种不同的实现:如果EnumSet大小小于64, 就返回RegularEnumSet实例(当然它继承自EnumSet),这个EnumSet实际上至用了一个long来存储这个EnumSet。 如果 EnumSet大小大于等于64,则返回JumboEnumSet实例,它使用一个long[]来存储。这样做的好处很明显:?大多数情况下返回的RegularEnumSet效率比JumboEnumSet高很多。(摘自:http://blog.csdn.net/hudashi/article/details/6943843) ? ?

本文给出EnumSet使用的几个例子

为了测试EnumSet,我们首先定义两个后面会用到枚举类?Season?Month

帮助 class="java keyword">enum Season { ????SPRING, SUMMER, AUTUMN, WINTER; } ? enum Month { ????JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER; }

使用noneOf方法创建空的EnumSet

帮助 // 创建一个空的EnumSet ????????Set<Season> emptyEnumSet = EnumSet.noneOf(Season.class); ????????System.out.println(emptyEnumSet);// []

使用EnumSet.allOf方法创建一个拥有所有枚举类元素的EnumSet

帮助 Set<Season> enumSet = EnumSet.allOf(Season.class); ????????System.out.println(enumSet);// [SPRING, SUMMER, AUTUMN, WINTER]

使用EnumSet.of方法返回拥有部分元素的EnumSet

如下面的例子,我们从月份的枚举类得到夏季、冬季拥有的月份组成的EnumSet:

帮助 Set<Month> summer = EnumSet.of(Month.APRIL, Month.MAY, Month.JUNE); ????????System.out.println(summer);// [APRIL, MAY, JUNE] ? ????????Set<Month> winter = EnumSet.of(Month.OCTOBER, Month.NOVEMBER, ????????????????Month.DECEMBER); ? ????????System.out.println(winter);// [OCTOBER, NOVEMBER, DECEMBER]

使用addAll方法,添加一个EnumSet中的所有元素到另外一个EnumSet

帮助 emptyEnumSet.addAll(enumSet); ????????System.out.println(emptyEnumSet);// [SPRING, SUMMER, AUTUMN, WINTER]

使用toArray方法,将EnumSet中的元素存放到数组中去

帮助 // 将EnumSet转换成数组类型 ????????Season[] seasons = new Season[enumSet.size()]; ????????enumSet.toArray(seasons); ????????System.out.println(Arrays.deepToString(seasons));// [SPRING, SUMMER, ????????????????????????????????????????????????????????????// AUTUMN, WINTER]

原文地址http://thecodesample.com/?p=583

更多的例子请访问?http://thecodesample.com/

发表评论
用户名: 匿名