包含键值对的Map属性的初始化方式
来源:互联网 发布:女神联盟2英雄进阶数据 编辑:程序博客网 时间:2024/05/22 13:10
严格来讲,map的初始化只包含new的操作。但在这里,因为是包含数据的map,所以我们把map的初始化分两步:
1. new的操作,我们这里称为初步初始化
2. put数据的操作,成为数据填充
两步合起来,称为包含键值对(数据)的map的初始化。
以下给出了这种map初始化的两种方式,我原来都是用第一种方式。第二种方式是今天第一次见,很新颖,也很简洁;全部初始化动作在一条语句内完成。
- 先初步初始化后填充
// 错误信息说明 public final /*static*/ Map<Integer, String> RESULT_MESSAGE = new HashMap<Integer, String>(); /*static*/{//如果不是静态属性,也可以使用构造函数 RESULT_MESSAGE.put(RESULT_CODE_OK, "ok"); RESULT_MESSAGE.put(RESULT_CODE_BADREQUEST, "bad request"); RESULT_MESSAGE.put(RESULT_CODE_UNAUTHORIZED, "unauthorized"); RESULT_MESSAGE.put(RESULT_CODE_FORBIDDEN, "forbidden"); RESULT_MESSAGE.put(RESULT_CODE_TOOMANYREQUEST, "too many request"); RESULT_MESSAGE.put(RESULT_CODE_INTERNALSERVERERROR, "Internal Server Error"); }
- 匿名内部类
// 错误信息说明 public final /*static*/ Map<Integer, String> RESULT_MESSAGE = new HashMap<Integer, String>(){ { put(RESULT_CODE_OK, "ok"); put(RESULT_CODE_BADREQUEST, "bad request"); put(RESULT_CODE_UNAUTHORIZED, "unauthorized"); put(RESULT_CODE_FORBIDDEN, "forbidden"); put(RESULT_CODE_TOOMANYREQUEST, "too many request"); put(RESULT_CODE_INTERNALSERVERERROR, "Internal Server Error"); } };
- 那么究竟两种方法各有什么优劣呢?以下是我的思考,不一定正确。
内部类
*优:*map的初始化和数据填充是强行在一体的,代码简洁,阅读性好。
劣:内部类会产生新的class文件,HashMap的子类,虽然是匿名的。所以可能性能并不是太好。我们讲子类一般都是对父类的扩展,在这里子类并没有对父类进行功能性上的扩展(复写),只是在内部填充了数据而已
先初步初始化后填充
优:不会使用子类,用的就是HashMap本身。不产生新的class文件
劣:Map的初步初始化和数据填充两部是分离的,不是被强行绑定在一起的。所以就有可能在初步初始化和数据填充中间夹塞许多代码,不易阅读
建议:建议使用先初步初始化后填充这种方式,因为不会产生新的类型。虽然不是被强行绑定在一起的,但是这是可人为控制的。只要写代码的时候注意一些,两步操作先后紧挨着放在一起,就会好多了
0 0
- 包含键值对的Map属性的初始化方式
- 对Map的键值对操作
- map的键值对的排序
- 利用map对键值的默认排序
- POJ2503 Babelfish(Map键值对的应用)
- 小数据键值对的保存方式
- 键值对RDD的创建方式
- c++ map的键值
- 迭代输出Map键值对的几种方法
- java中获取map的键值对方法
- Map是一个由键值对组成的数据结构
- poj2403字符串的处理,用map存键值对
- js中自定义键值对形式的Map结构
- MAP中删除所有vlaue值相同的键值对
- Java练习题-删除Map中值重复的键值对
- Map-> hashMap treeMap 以键值对的形式
- C++学习笔记之map键值对的修改
- STL/map的遍历和初始化方式
- SolrCloud-5.5.1配置中文分词ansj-3.4.6
- wordpress的avada 5.0主题添加百度分享盒的方法
- 图数据挖掘--六度分隔
- 医学论文撰写的内容
- Fragment
- 包含键值对的Map属性的初始化方式
- 浅谈TCP连接的三次握手与四次挥手
- JSP九大内置对象
- Web开发性能优化---UI界面篇
- 二重调度(三):只使用虚函数
- Web容器 与Spring容器 启动
- SQL(八)-用AND/OR过滤
- Ansible学习笔记
- android adb shell获取和设置IP相关信息