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中的枚举值对按其在枚举类中定义的顺序排序