Java之集合(十)EnumMap
转载请注明源出处:http://www.cnblogs.com/lighten/p/7371744.html
1.前言
本章介绍Map体系中的EnumMap,该类是专门针对枚举类设计的一个集合类。集合中的所有键必须是同一个枚举类的实例。当EnumMap创建后,会表现成一个数组array,这种表现方式是紧凑高效的。EnumMap的顺序,由枚举类实例的定义顺序决定。集合视图的迭代器是弱一致(weakly consistent)的,不会抛出并发异常ConcurrentModificationException。当迭代器运行时不会展示另一个线程对map的修改。空的键是不被允许的。线程不安全,最好在创建的时候调用Collections#synchronizedMap方法来进行同步。注意,所有基础操作都是常量级时间。
2.EnumMap
上面就是EnumMap的一个基本结果了。keyType是枚举类的Class对象,keyUniverse是枚举类按顺序下来的实例对象,存放在数组中。vals就是对应键的值,下标相同就是一对。size就是大小了,NULL是没有查询到键时的结果。从这个结构可以看出,EnumMap的操作应该是很快的,都是数组。
put方法就简单了,检查其类型,再获取类中的顺序号,直接对应相应的key值就可以了。remove方法类似。
由于上面的原因,必须和类完全匹配才行,所以通过集合来构造的时候,实际上只是取了第一个元素的类型,然后才遍历放入对应的位置。
其它的也没有什么可说的,最后注意一下EnumMap由于其实现的特性,所以移除的时候键也不会移除。
Java之集合(十)EnumMap的更多相关文章
- Java之集合(十五)Set综述
转载请注明源出处:http://www.cnblogs.com/lighten/p/7427554.html 1.前言 原本按照顺序应该是list.queue然后就是set的讲解,但是因为set的实现 ...
- Java之集合(十九)LinkedBlockingDeque
转载请注明源出处:http://www.cnblogs.com/lighten/p/7494577.html 1.前言 本章介绍LinkedBlockingDeque,这是一个可选容量的有界双向链表队 ...
- Java之集合(十八)DelayQueue
转载请注明源出处:http://www.cnblogs.com/lighten/p/7493735.html 1.前言 本章介绍阻塞队列DelayQueue,这是一个无界阻塞队列.其存储延时的元素,只 ...
- Java之集合(十六)ArrayBlockingQueue
转载请注明源出处:http://www.cnblogs.com/lighten/p/7427763.html 1.前言 JDK5是一个重要的更新版本,其提供了大量的并发类.之前的介绍都是一些util下 ...
- Java之集合(十四)Hashtable
转载请注明源出处:http://www.cnblogs.com/lighten/p/7426522.html 1.前言 HashTable这个类很奇特,其继承了Dictionary这个没有任何具体实现 ...
- Java之集合(十二)TreeMap
转载请注明源出处:http://www.cnblogs.com/lighten/p/7411935.html 1.前言 本章介绍Map体系中的TreeMap,顾名思义,这个是一个树结构的Map.Tre ...
- Java基础(十九)集合(1)集合中主要接口和实现类
1.Java集合框架为不同类型的集合定义了大量接口 其中,集合有两个基本接口:Collection和Map. 2.各接口的主要特征如下 (1)Collection接口:是List接口.Set接口和Qu ...
- Java中的集合(十五) Iterator 和 ListIterator、Enumeration
Java中的集合(十五) Iterator 和 ListIterator.Enumeration 一.Iterator (一).简介 Iterator 是一个接口,它是集合的迭代器.集合可以通过Ite ...
- Java中的集合(十四) Map的实现类LinkedHashMap
Java中的集合(十四) Map的实现类LinkedHashMap 一.LinkedHashMap的简介 LinkedHashMap是Map接口的实现类,继承了HashMap,它通过重写父类相关的方法 ...
随机推荐
- Android 6.0以上 需要运行时申请的权限
转载:http://www.cnblogs.com/tangs/articles/6377347.html 自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifes ...
- 山东省第七届ACM竞赛 J题 Execution of Paladin (题意啊)
题意:鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中7个已死鱼人.如果死掉的不足7个,那么召唤的数量就会不足7. 鱼人有很多,下面的4个是: 寒光智者 ...
- python 判断是否是空行或注释行
#coding:utf-8 '''''cdays-4-exercise-6.py 文件基本操作 @note: 文件读取写入, 列表排序, 字符串操作 @see: 字符串各方法可参考hekp(str)或 ...
- 给Notepad++换主题
Notepad++是一款不错的编辑器,很轻巧,我很喜欢它.再换个主题,加个代码高亮,看上去就更专业了.如果你是Mac用户,应该听说或使用过Textmate(什么?没听过,那你该补课了!),Textma ...
- authentication 和 authorization
单词 词性 解释 authentication n. 认证 authentic adj. 真实的 authorization n. 授权 authorise vt. 授权 authentication ...
- js基础学习笔记(五)
多种选择(Switch语句) 当有很多种选项的时候,switch比if else使用更方便. 语法: switch(表达式) { case值1: 执行代码块 1 break; case值2: 执行代码 ...
- (匹配)The Accomodation of Students --HDU --2444
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2444 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- (二分匹配 模板)过山车 -- hdu --2063
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2063 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- lock wait timeout exceeded; try restarting transactio解决方案
问题原因: 今天线上环境,突然出现一个问题,追踪原因是数据库中的一条语句报错,错误内容:lock wait timeout exceeded; try restarting transac ...
- 安卓读写INI文件
安卓读写INI文件 uses System.IoUtils procedure TForm1.Button1Click(Sender: TObject);var IniFile:TIniFile; C ...