注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

EnumMap  

2010-08-11 13:59:51|  分类: JAVA集合容器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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:是有序的。迭代进行时返回的映射的顺序就是其枚举类型键在枚举声明中的位置顺序。
  评论这张
 
阅读(683)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017