EnumMap

EnumMap(1.5)
java.util.EnumMap与枚举类型键一起使用的专用 Map 实现。枚举映射中所有键都必须来自单个枚举类型,该枚举类型在创建映射时显式或隐式地指定。
枚举映射在内部表示为数组。此表示形式非常紧凑且高效。
枚举映射根据其键的自然顺序来维护(该顺序是声明枚举常量的顺序)。
在集合视图(keySet()、entrySet() 和 values())所返回的迭代器中反映了这一点。
由集合视图返回的迭代器是弱一致 的:它们不会抛出 ConcurrentModificationException,
也不一定显示在迭代进行时发生的任何映射修改的效果。
不允许使用 null 键。试图插入 null 键将抛出 NullPointerException。
但是,试图测试是否出现 null 键或移除 null 键将不会抛出异常。允许使用 null 值。
像大多数集合一样,EnumMap 是不同步的。如果多个线程同时访问一个枚举映射,
并且至少有一个线程修改该映射,则此枚举映射在外部应该是同步的。这一般通过对自然封装该枚举映射的某个对象进行同步来完成。
如果不存在这样的对象,则应该使用 Collections.synchronizedMap(java.util.Map) 方法来“包装”该枚举。
最好在创建时完成这一操作,以防止意外的非同步访问:
     Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap(...));
实现注意事项:所有基本操作都在固定时间内执行。虽然并不保证,但它们很可能比其 HashMap 副本更快。 
注意1:不允许使用 null 键。试图插入 null 键将抛出 NullPointerException
注意2:EnumMap 是不同步的,不是线程的。
注意3:EnumMap与枚举类型键一起使用的专用 Map 实现。枚举映射中所有键都必须来自单个枚举类型,
该枚举类型在创建映射时显式或隐式地指定。枚举映射在内部表示为数组。此表示形式非常紧凑且高效。
枚举类型键的通过ordinal() 返回的返回枚举常量的序数就是它所映射的值对象在数组中的下标。
注意4:是有序的。迭代进行时返回的映射的顺序就是其枚举类型键在枚举声明中的位置顺序。

你可能感兴趣的:(HashMap,测试,null)