`
leonzhx
  • 浏览: 796591 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Item 32: Use EnumSet instead of bit fields

阅读更多

1.  The java.util package provides the EnumSet class to efficiently represent sets of values drawn from a single enum type. This class implements the Set interface, providing all of the richness, type safety, and interoperability you get with any other Set implementation. But internally, each EnumSet is represented as a bit vector. If the underlying enum type has sixty-four or fewer elements, the entire EnumSet is represented with a single long, so its performance is comparable to that of a bit field. Bulk operations, such as removeAll and retainAll, are implemented using bitwise arithmetic, just as you’d do manually for bit fields.

 

2.  EnumSet provides a rich set of static factories for easy set creation.

 

3.  The one real disadvantage of EnumSet is that it is not, as of release 1.6, possible to create an immutable EnumSet.

 

分享到:
评论

相关推荐

    Effective Java 3rd edition(Effective Java第三版英文原版)附第二版

    Item 36: Use EnumSet instead of bit fields Item 37: Use EnumMap instead of ordinal indexing Item 38: Emulate extensible enums with interfaces Item 39: Prefer annotations to naming patterns Item 40: ...

    java集合-EnumSet的使用

    EnumSet 是 Java 中用于存储枚举类型元素的集合类。它是 AbstractSet 的子类,并专门为枚举类型设计,提供了高效的实现。 下面是关于 EnumSet 的一些重要信息: 存储枚举元素:EnumSet 只能存储同一个枚举类型的...

    Java中EnumSet代替位域代码详解

    在Java编程中,有时我们需要表示一组特定状态或标志,传统的做法是使用位域(bit fields),即通过位运算来组合和操作一组布尔值。然而,《Effective Java》第二版中提到,Java提供了一个更好的替代方案:`EnumSet`...

    阅读EnumSet抽象类

    noneOf方法创建了一个空的EnumSet对象,而allOf方法创建了一个包含所有枚举类型元素的EnumSet对象。copyOf方法则创建了一个与指定EnumSet对象相同的EnumSet对象。 在EnumSet抽象类中,还定义了一个抽象方法addAll,...

    说说Java中的枚举 转 可以了,够了 包括EnumSet(Map)

    EnumSet<Color> colors = EnumSet.allOf(Color.class); ``` `EnumMap`则是另一种专门为枚举设计的数据结构,它是`Map`接口的一个实现。与普通`HashMap`相比,`EnumMap`在性能和内存使用上都有优势,因为它的键总是...

    java笔试题a说他不和x比-effective-java-in-a-nutshell:简而言之,有效的Java

    的例如:EnumSet.of(自变量1,参数2) valueOf例如:BigInteger.valueOf(Integer.MAX_VALUE) getInstance例如:myObject.getInstance(argument) getXXX例如: Files.getFileStore(path) newXXX例如:Files....

    一文弄懂EnumMap和EnumSet

    public static <E extends Enum> EnumSet allOf(Class elementType) {...} ``` EnumSet的内部有两种实现:`RegularEnumSet` 和 `JumboEnumSet`,分别适用于枚举值数量小于或等于64的情况以及更多的枚举值。这两个类...

    Java EnumSet工作原理初窥

    EnumSet是Java枚举类型的泛型容器,Java既然有了SortedSet、TreeSet、HashSet等容器,为何还要多一个EnumSet呢?答案肯定是EnumSet有一定的特性,举个例子,EnumSet的速度很快。其他特性不一一列举了,毕竟本文的...

    java实现高效的枚举元素集合示例

    `complementOf(week)`返回一个包含所有未在`week`中出现的`Weeks`元素的新`EnumSet`,然后使用`addAll()`将其添加到`week`中,使其包含所有枚举元素。 5. 获取指定范围的元素:`week.removeAll(EnumSet.range...

    google common jar包

    7. **枚举集**:提供EnumSet和EnumMap,针对枚举类型的集合操作进行了优化,性能比常规的Set和Map更好。 8. **字符串工具**:包含了一些处理字符串的实用方法,比如Joiner和Splitter,可以方便地合并和分割字符串。...

    良葛格Java JDK 5.0学习笔记

    `EnumSet`是专门为枚举类型设计的高效集合并集实现,它提供了比普通`HashSet`更好的性能和安全性。 9. **并发工具类(Concurrent Utilities)**: `java.util.concurrent`包引入了大量的并发工具类,如`...

    android_external_square_javawriter

    Java编写器JavaWriter是一个实用程序类,它有助于生成 Java 源文件。 在执行诸如注释处理或与元数据文件(例如,数据库模式、... of( PRIVATE )) .emitField( " String " , " lastName " , EnumSet . of( PRIVATE )) .

    libjavawriter

    Java编写器 JavaWriter是一个实用程序类,它有助于生成 Java 源文件。... .emitField( " String " , " firstName " , EnumSet . of( PRIVATE )) .emitField( " String " , " lastName " , EnumSet . of( PRIVATE )) .

    util包

    `EnumSet`和`EnumMap`是专门为枚举类型设计的高效集合实现。 6. **队列和堆**: - **Queue**:接口,定义了先进先出(FIFO)的数据结构。 - **PriorityQueue**:优先级队列,元素根据自然顺序或自定义比较器进行...

    org.apache.commons.lang jar下载

    12. **枚举枚举**: `EnumSet` 和 `EnumMap` 类提供了针对枚举类型的集合实现,它们在性能和内存占用上优于普通集合。 `org.apache.commons.lang3-3.8` 版本意味着这是Lang项目的第3个主要版本的第8次次要更新,通常...

    commons-lang-2.4.rar代码及jar文件

    10. **枚举和比较器**:`EnumSet`和`EnumComparator`提供了更高效的枚举集合和比较器实现。 这些工具类在实际开发中非常实用,能够提高代码的可读性和效率。通过源代码学习,可以了解这些工具类的设计模式和实现...

    jdk1.5 64位jar包

    8. **枚举类型的遍历**:通过EnumSet和EnumMap类,可以更高效地处理枚举类型,这些类针对枚举优化,提供了比常规集合更好的性能。 9. **内省增强(Introspection Enhancements)**:改进了反射API,使得动态访问类...

Global site tag (gtag.js) - Google Analytics