EnumSet 和 EnumMap 简单理解

在阅读《Effective Java》时,看到了 EnumSet,就去查了下。

EnumSet

首先看一下类图:
EnumSet

内部实现上,每个 EnumSet 内容都表示为位矢量(区别于 HashSet 底层使用 HashMap 实现),一般(低于 64 个元素)整个 EnumSet 就是用一个 long 的位运算来表示的。也就是说它替你使用位算法实现了这一切,避免你自己写位运算导致代码难读懂的情况(实际上位运算不是太难读懂)。

但是不建议使用,具体看 EnumSet 可能是 Java 中最无意义的类

EnumMap

类图如下:
EnumMap

EnumMapHashMap 区别:

  1. EnumMap 主要用于对枚举值做统计,EnumMap 能实现的,HashMap 都能实现;
  2. EnumMap 的性能更好,这是因为 EnumMapEnum 特性决定了不论是从设计上,实现上,存储上都决定了其有很好的性能;
  3. EnumMap 还有其特殊的一些特性,例如维持了自然顺序

更多详细分析请看 Java数据类型系列之EnumMap

posted @ 2022-11-19 10:17  ageovb  阅读(67)  评论(0编辑  收藏  举报