8.6.8 EnumMap实现类
8.6.8 EnumMap实现类
EnumMap
是一个与枚举类一起使用的Map
实现, EnumMap
中的所有key
都必须是单个枚举类的枚举值。创建EnumMap
时必须显式或隐式指定它对应的枚举类。
EnumMap特征
EnumMap
具有如下特征:
存储结构 数组
EnumMap
在内部以数组形式保存,所以这种实现形式非常紧凑、高效
按枚举值的定义顺序排序
EnumMap
根据key
的自然顺序(即枚举值在枚举类中的定义顺序)来维护key-value
对的顺序。当程序通过keySet
、 entrySet()
、 values()
等方法遍历EnumMap
时可以看到这种顺序。
key不可以为null,value可以为null
EnumMap
**不允许使用null
作为key
,但允许使用null
作为value
**。
- 如果试图使用
null
作为key
时将抛出NullPointerException
异常。 - 如果只是查询是否包含值为
null
的key
,或只是删除值为null
的key
,都不会抛出异常
创建EnumMap时必须指定枚举类
与创建普通的Map
有所区别的是,创建EnumMap
时必须指定一个枚举类,从而将该EnumMap
和指定枚举类关联起来。
程序 EnumMap示例
下面程序示范了EnumMap
的用法。
1 | import java.util.*; |
上面程序中创建了一个EnumMap
对象,创建该EnumMap
对象时指定它的key
只能是Season
枚举类的枚举值。如果向该EnumMap
中添加两个key-value
对后,这两个key-value
对将会以Season
枚举值的自然顺序排序。
编译、运行上面程序,看到如下运行结果:
1 | {SPRING=春暖花开, SUMMER=夏日炎炎} |
总结
- 创建
EnumMap
是就需要传入枚举的class
对象 EnumMap
中的key
只能是Season
枚举类的枚举值.- 放入
EnumMap
中的枚举值对按其在枚举类中定义的顺序排序