
Java之TreeMap浅谈
发布日期:2021-05-27 02:54:13
浏览次数:5
分类:技术文章
本文共 1402 字,大约阅读时间需要 4 分钟。
TreeMap<K,V>
的Key值是要求实现java.lang.Comparable
,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。
HashMap<K,V>
的Key值实现散列hashCode()
,分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。
如果你需要得到一个有序的结果时就应该使用TreeMap,TreeMap是非线程安全的。
TreeMap中默认是按照升序进行排序的,通过自定义的比较器来实现降序。
定义一个比较器类,实现Comparator接口,重写compare方法,有两个参数,这两个参数通过调用compareTo进行比较,而compareTo默认规则是:
-
如果参数字符串等于此字符串,则返回 0 值;
-
如果此字符串小于字符串参数,则返回一个小于 0 的值;
-
如果此字符串大于字符串参数,则返回一个大于 0 的值。
自定义时取反即可,智慧通过自定义类将其作为参数传递进TreeMap的构造方法中,就可以使用自定义降序了。
代码如下:
public class Test { public static void main(String[] args) { //初始化自定义比较器 MyComparator comparator = new MyComparator(); //初始化一个map集合 Mapmap = new TreeMap (comparator); //存入数据 map.put("a", "a"); map.put("b", "b"); map.put("f", "f"); map.put("d", "d"); map.put("c", "c"); map.put("g", "g"); //遍历输出 Iterator iterator = map.keySet().iterator(); while(iterator.hasNext()){ String key = (String)iterator.next(); System.out.println(map.get(key)); } } static class MyComparator implements Comparator { @Override public int compare(Object o1, Object o2) { String param1 = (String)o1; String param2 = (String)o2; //return param1.compareTo(param2); return -param1.compareTo(param2); } }}
转载地址:https://blog.csdn.net/leijie0322/article/details/112787379 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2023年11月19日 01时55分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
jQuery官网下载步骤
2019-03-25
机器学习(一) :逻辑回归初步
2019-03-25
Spring配置文件schema约束
2019-03-25
struts2的详细执行流程
2019-03-25
Struts2详细执行流程自己总结
2019-03-25
Java中的非线程安全和线程安全举例说明
2019-03-25
Hibernate的映射文件的hbm.xml的配置方法
2019-03-25
SSH2项目引入百度富文本编辑器Ueditor编辑器
2019-03-25
Tomcat端口被占用解决方法
2019-03-25
将java工程中lib文件下的jar包换成jar名保存
2019-03-25
如何删除本地项目文件中的.svn文件
2019-03-25
JavaWeb学习笔记九:监听器Listener学习,三大域对象的生命周期,邮件发送原理
2019-03-25
一个.java文件中可以有几个同级类
2019-03-25
centos7环境下mysql5.7的安装与配置
2019-03-25
SSH server shell配置黑色样式
2019-03-25
hibernate学习笔记三:表之间的关系、一对多和多对多操作
2019-03-25