使用EnumSet 代替位域(32)

一、位域(Bit field):使用or 运算将几个常量合并到一个集合中java

  • 位操做,能够有效地执行 AND 、OR 这样的位操做
  • 可是 位域比int 常量枚举缺点更多

二、java.util 包里面的EnumSet 类是有效的替代方案性能

  • 从单个枚举类型中提取的多个值的多个集合
  • 整个EnumSet 就是用单个long来表示的,内部实现用到了大量位运算,性能可与位域媲美

  • EnumSet 提供静态工厂,轻松建立集合

  • EnumSet 集 位域的性能优点和枚举类型全部优势于一身
  • 缺点是:没法建立不可变的EnumSet 集合
相关文章
相关标签/搜索