EnumSet的几个例子
EnumSet?是一个与枚举类型一起使用的专用?Set?实现。枚举set中所有元素都必须来自单个枚举类型(即必须是同类型,且该类型是Enum的子类)。
?枚举类型在创建?set?时显式或隐式地指定。枚举?set?在内部表示为位向量。?此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,
足以用作传统上基于?int?的“位标志”的替换形式,具有高品质、类型安全的优势。
本文给出EnumSet使用的几个例子:
为了测试EnumSet,我们首先定义两个后面会用到枚举类?Season?和Month
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/
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。