【发布时间】:2011-01-28 17:27:33
【问题描述】:
我在后台查看了 EnumSet.allOf,它看起来非常高效,尤其是对于值少于 64 个的枚举。
基本上所有集合共享所有可能的枚举值的单个数组,唯一的其他信息是位掩码,在allOf 的情况下一举设置。
另一方面,Enum.values() 似乎有点黑魔法。此外,它返回的是一个数组,而不是一个集合,因此在许多情况下,它必须用 Arrays.asList() 修饰才能在任何需要集合的地方使用。
那么,EnumSet.allOf 应该比Enum.values 更可取吗?
更具体地说,应该使用哪种形式的 for 迭代器:
for ( final MyEnum val: MyEnum.values( ) );
或
for ( final MyEnum val: EnumSet.allOf( MyEnum.class ) );
【问题讨论】: