EnumSet 和 EnumMap 简单理解
在阅读《Effective Java》时,看到了 EnumSet,就去查了下。
EnumSet
首先看一下类图:

内部实现上,每个 EnumSet 内容都表示为位矢量(区别于 HashSet 底层使用 HashMap 实现),一般(低于 64 个元素)整个 EnumSet 就是用一个 long 的位运算来表示的。也就是说它替你使用位算法实现了这一切,避免你自己写位运算导致代码难读懂的情况(实际上位运算不是太难读懂)。
但是不建议使用,具体看 EnumSet 可能是 Java 中最无意义的类。
EnumMap
类图如下:

EnumMap 和 HashMap 区别:
EnumMap主要用于对枚举值做统计,EnumMap能实现的,HashMap都能实现;EnumMap的性能更好,这是因为EnumMap的Enum特性决定了不论是从设计上,实现上,存储上都决定了其有很好的性能;EnumMap还有其特殊的一些特性,例如维持了自然顺序。
更多详细分析请看 Java数据类型系列之EnumMap

浙公网安备 33010602011771号