zoukankan      html  css  js  c++  java
  • 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由于其实现的特性,所以移除的时候键也不会移除。

  • 相关阅读:
    Python统计nginx日志域名下载量
    如何使用MySQL自动化备份脚本添加备份任务
    迁移数据库报错
    cobbler
    Zabbix添加nginx-php监控
    Zookeeper运维问题集锦
    Jira+Wiki配置手册
    Gitlab安装恢复手册
    Glusterfs配置手册
    k8s的认证-RBAC机制
  • 原文地址:https://www.cnblogs.com/lighten/p/7371744.html
Copyright © 2011-2022 走看看