This theme is built with awes|

ageovb

园龄:13年3个月粉丝:13关注:0

2022-11-19 10:17阅读: 72评论: 0推荐: 0

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

本文作者:ageovb

本文链接:https://www.cnblogs.com/ageovb/p/16905557.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   ageovb  阅读(72)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起