EnumMap
以下内容基于jdk1.7.0_79源码;
什么是EnumMap
Map接口的实现,其key-value映射中的key是Enum类型;
补充说明
其原理就是一个对象数组,数组的下标索引就是根据Map中的key直接获取,即枚举中的ordinal值;
效率比HashMap高,可以直接获取数组下标索引并访问到元素;
简单示例
比较简单,源代码就不一一添加注释了,简单地说,就是一个对象数组;
这里稍微了解一下怎么使用就好了,下面列出一些方法的调用示例:
package com.pichen.collection; import java.util.EnumMap;
import java.util.Map;
import java.util.Map.Entry; enum Operate{
ADD, UPDATE, DELETE;
} public class Main { public static void main(String[] args) {
Map<Operate, String> map = new EnumMap<Operate, String>(Operate.class); //put方法
map.put(Operate.ADD, "add operate");
map.put(Operate.UPDATE, "update operate");
map.put(Operate.DELETE, "delete operate"); //重写了toString方法
System.out.println(map); //size方法
System.out.println(map.size()); System.out.println(map.containsKey(Operate.UPDATE));
System.out.println(map.containsValue("update operate"));
System.out.println(map.get(Operate.DELETE)); //remove
map.remove(Operate.UPDATE);
System.out.println(map); //key集合
for(Operate operate:map.keySet()){
System.out.print(operate + " ");
} System.out.println();
//value集合
for(String obj:map.values()){
System.out.print(obj + ",");
} System.out.println();
//key-value集合
for(Entry<Operate, String> entry:map.entrySet()){
System.out.print(entry.getKey() + ": " + entry.getValue() + ", ");
} }
}
输出结果:
{ADD=add operate, UPDATE=update operate, DELETE=delete operate}
3
true
true
delete operate
{ADD=add operate, DELETE=delete operate}
ADD DELETE
add operate,delete operate,
ADD: add operate, DELETE: delete operate,
EnumMap的更多相关文章
- 计算机程序的思维逻辑 (50) - 剖析EnumMap
上节我们提到,如果需要一个Map的实现类,并且键的类型为枚举类型,可以使用HashMap,但应该使用一个专门的实现类EnumMap. 为什么要有一个专门的类呢?我们之前介绍过枚举的本质,主要是因为枚举 ...
- 【Effective Java】9、使用EnumMap代替序数索引
package cn.xf.cp.ch02.item33; import java.util.EnumMap; import java.util.HashSet; import java.util.M ...
- 容器--EnumMap
一.概述 EnumMap是一类特殊的Map, 其特殊之处在于KEY需要是枚举类型,由于枚举类型的特点是值的个数是固定的,所以,对于EnumMap来说,其所能存储的个数也就是固定的了.这种类型的Map相 ...
- Effective Java 33 Use EnumMap instead of ordinal indexing
Wrong practice: Putting sets into an array indexed by the type's ordinal /** * Added demo for the &q ...
- 第33条:用EnumMap代替序数索引
有时候,会见到利用ordinal方法来索引数组的代码.例如下面这个简化的类,表示一种烹饪用的香草: public class Herb { public enum Type { ANNUAL, PER ...
- Java——(八)Map之LinkedHashMap、TreeMap、EnumMap实现类
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.LinkedHashMap实现类 LinkedHashMap需要维护意识的插入顺序,因此性能 ...
- EnumMap源代码阅读器
EnumMap是一个用于存放键值为enum类型的map.全部的键值必须来自一个单一的enum类型.EnumMap内部用数组表示效率更高. EnumMap维持键值的自然顺序(即枚举类型常量声明的顺序), ...
- java 一个函数EnumMap返回多个值
java 一个函数如何返回多个值 在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!! 网上这个问题的解决方法: 1.使用map返回值:这个方法问题是,你并不知道如何返回值 ...
- EnumMap demo
优点:常量做为Key,在编译期就确定了.Enum做为key,在运行时也可以改变 package enumdemo; import java.util.EnumMap; import java.util ...
随机推荐
- 关于easyUI的模态对话框
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址.博客园蜗牛cnblogs.com/tdws 会用easyUI的模态对话框会是我们的开发更加简洁,只需下载这个插件,把需要的文件拖到项目 ...
- 【处理手记】Configuration system failed to initialize异常的另类原因
有个c#程序在某台电脑上,执行某个操作时,总是会报如图错误: 度娘一番,发现市面上常见的原因是配置文件中的特定节点的位置不对,或者配置文件损坏等等,而这个程序根本没有使用内置的配置文件方案,而是用的i ...
- jquery基本选择器标签名选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 孙鑫MFC学习笔记20:Hook编程
1.HOOK拦截消息,设置越后的钩子优先级越高(钩子队列)2.SetWindowHookEx设置钩子 如果thread identifier为0或其他进程创建的线程,回调函数需要在动态链接库中声 ...
- Java 读取Properties文件时应注意的路径问题
1. 使用Class的getResourceAsStream()方法读取Properties文件(资源文件)的路径问题: InputStream in = this.getClass().getRe ...
- MySQL函数不能创建的解决方法
MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看. http://database.51cto.com/art/201010/229 ...
- 【整理】 JavaScript模块化规范AMD 和 CMD 的区别有哪些?
根据玉伯等人在知乎上的回答整理.整理中... AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMD CMD 规范在这里:https://githu ...
- 第 16 章 CSS 盒模型[下]
学习要点: 1.元素可见性 2.元素盒类型 3.元素的浮动 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素可见性 使用 vis ...
- 泛函编程(36)-泛函Stream IO:IO数据源-IO Source & Sink
上期我们讨论了IO处理过程:Process[I,O].我们说Process就像电视信号盒子一样有输入端和输出端两头.Process之间可以用一个Process的输出端与另一个Process的输入端连接 ...
- JAVA开发环境和IntelliJ工具安装
在本地开发机中进行web项目的开发,部署到生产环境进行产品发布时,需要将web应用的文件打包成war包,War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动, ...