HashMap与TreeMap的区别
2015-12-10 10:47
190 查看
首先描述下什么是Map。
在数组中我们是通过数组的下标来对其内容进行索引的,而在Map中我们是通过对象对对象进行索引的,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平常说的键值对。
HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
两种常规Map性能
HashMap:适用于在Map中插入、删除和定位元素。
TreeMap:适用于按自然顺序或自定义顺序遍历键(key)。
举例TreeMap的顺序定义:
在数组中我们是通过数组的下标来对其内容进行索引的,而在Map中我们是通过对象对对象进行索引的,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平常说的键值对。
HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
两种常规Map性能
HashMap:适用于在Map中插入、删除和定位元素。
TreeMap:适用于按自然顺序或自定义顺序遍历键(key)。
举例TreeMap的顺序定义:
TreeMap<File, Boolean> treeMap = new TreeMap<File, Boolean>(new Comparator<File>() { //重写这个比较器方法,来自定义我们key的排,默认是自然排序(一般是升序) @Override public int compare(File o1, File o2) { //小于0升序,大于0降序 String code1 = getCompanyCode(o1); String code2 = getCompanyCode(o2); if (StringUtils.isEmpty(code1) || StringUtils.isEmpty(code2)) return code1.compareTo(code2); else return code1.compareTo(code2); } });
相关文章推荐
- URi和Url格式
- Python常用内建模块
- 从反思谈论阵列和指针的几个问题,腾讯的笔名
- [TZ]内存与IO访问(4)-IO内存静态映射
- 欢迎使用CSDN-markdown编辑器
- 详解ICMP协议
- 判断是否摄像机可以看到
- 华为OJ之N皇后问题(C++代码)
- Jenkins-Slave节点配置&Job关联
- jquery 操作input
- IOS 开发中[IOS9更新后...网络?第三方库?报错?]
- 特征描述子匹配公用接口
- ZOJ 3645 (高斯消元)
- HDU 2077 汉诺塔IV【递推】
- JSON序列化与反序列化一个集合
- Installation failed with message INSTALL_FAILED_UID_CHANGED.--APK安装失败解决方法
- n个人围一圈报数问题
- MapReduce:详解Shuffle过程
- iDaily的诞生
- 【springmvc+mybatis项目实战】杰信商贸-13.购销合同列表