在Map集合框架中,除了HashMap以外,TreeMap也是常用到的集合对象之一。

与HashMap相比,TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。其中,可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序;

不同于HashMap的哈希映射,TreeMap实现了红黑树的结构,形成了一颗二叉树。

TreeMap继承于AbstractMap,实现了Map, Cloneable, NavigableMap, Serializable接口。

(1)TreeMap 继承于AbstractMap,而AbstractMap实现了Map接口,并实现了Map接口中定义的方法,减少了其子类继承的复杂度;

(2)TreeMap 实现了Map接口,成为Map框架中的一员,可以包含着key-value形式的元素;

(3)TreeMap 实现了NavigableMap接口,意味着拥有了更强的元素搜索能力;

(4)TreeMap 实现了Cloneable接口,实现了clone()方法,可以被克隆;

(5)TreeMap 实现了Java.io.Serializable接口,支持序列化操作;

TreeMap具有如下特点:

不允许出现重复的key;

可以插入null键,null值;

可以对元素进行排序;

无序集合(插入和遍历顺序不一致);

TreeMap基本操作

[Java] 纯文本查看 复制代码

TreeMap排序

(1)使用元素自然排序

在使用自然顺序排序时候,需要区分两种情况:一种是Jdk定义的对象,一种是自己定义的对象;

[Java] 纯文本查看 复制代码

在自然顺序比较中,需要让被比较的元素实现Comparable接口,否则在向集合里添加元素时报:"java.lang.ClassCastException: com.huangqiuping.collection.map.SortedTest cannot be cast to java.lang.Comparable"异常;

这是因为在调用put()方法时,会将传入的元素转化成Comparable类型对象,所以当你传入的元素没有实现Comparable接口时,就无法转换,遍会报错;

(2)使用自定义比较器排序

使用自定义比较器排序,需要在创建TreeMap对象时,将自定义比较器对象传入到TreeMap构造方法中;

自定义比较器对象,需要实现Comparator接口,并实现比较方法compare(To1,To2);

使用自定义比较器排序的话,被比较的对象无需再实现Comparable接口了;

[Java] 纯文本查看 复制代码

更多java学习资料可关注:itheimaGZ获取

python treemap_TreeMap简介相关推荐

  1. 《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1. ...

  2. Python列表简介

    Python列表简介 什么是列表 #普通的变量定义形式 tom ='Tom' jack ='Jack' john ='John'pet1 ='cat' pet2 ='dog' pet3 ='bird' ...

  3. Python编程简介

    Python编程简介 2011年06月23日 NOTE: The following is a short tutorial about python program, for Chinese rea ...

  4. 大数据教程【05.01】--Python 数据分析简介

    更多信息请关注WX搜索GZH:XiaoBaiGPT Python数据分析简介 本教程将介绍如何使用Python进行大数据分析.Python是一种功能强大且易于使用的编程语言,具备丰富的数据分析库和工具 ...

  5. Python基础知识(Python的简介、Python环境的安装、集成开发环境Pycharm的安装)

    1.Python的简介 python是跨平台的计算机语言.解释型语言.交互式语言.面向对象语言.初学者最好学的语言 什么是跨平台:意思就是说可以在很多操作系统中执行.比如:可以在windows操作系统 ...

  6. Python Notebook简介

    windows下面安装和使用Python, IPython NoteBook (详细步骤) Python Notebook简介1 IPython notebook目前已经成为用Python做教学.计算 ...

  7. python画图简介

    python画图简介 1.seaborn学习资料 2.matplotlib学习资料 3.扩展学习资料 4.实际练习 5.常用命令(待补充) 6.常用知识点备查 6.1 plt的默认属性rc参数 6.2 ...

  8. Python库简介之pylab

    Python库简介之pylab 转载于 链接: https://blog.csdn.net/qq_34519492/article/details/96437901 https://blog.csdn ...

  9. python笔记-简介

    一Python的简介 一历史简介 Python诞生于1991年,目前有27年了,比1995年的JAVA语言都早了4年,为何大器晚成? 其一,在1990那个年代,计算机性能相比现在差很多,程序执行速度和 ...

最新文章

  1. AI生态赋能2018论坛来袭!转型AI看这里!
  2. iOS 中的CoreImage框架(framework)
  3. 51CTO -- 网络自学的瓶颈期
  4. 下列可以产生斜体字的html标签是,电子科技大学《网页设计与制作》20秋期末考试题目【标准答案】...
  5. 【dll 返回字符串 】2
  6. linux的centos7安装mysql5.7服务教程
  7. preg_match 参数获取两个_「死磕 Spring」—– IOC 之 获取 Document 对象
  8. 如何在doc下运行java程序及打包成.jar格式的Java程序
  9. USB_CAN-2A使用CANTest解析J1939
  10. 使用 laravel-admin 配置后台管理系统
  11. 大学的c语言课程难度,大学挂科率最高的4门课程,学霸也担心挂科,有你学过的课程吗?...
  12. 人工智能新风口上,网易是否能够突围?
  13. mac 配置mysql
  14. libtorch tensor的使用
  15. pc端ui图片尺寸_PC端UI设计尺寸规范?
  16. 【算法】求解最大连续子序列和的问题
  17. 计算机网络-CPT实验
  18. 小陈学js 预解析
  19. 洛谷3月月赛 R1 Step! ZERO to ONE
  20. 导出Word的两种方式

热门文章

  1. 能说会道爱办公——“别人家的”Chrome插件到底怎么做
  2. android ormlite框架,ORMLite框架 的使用方法—给你的数据库操作插上翅膀
  3. 关于mybatis中下下划线字段查出为null
  4. U盘损坏打不开,提示需【格式化】的解决办法【亲测有效】
  5. php源码更换短信宝接口教程,Thinkphp5结合sms-bao短信宝手机短信接口使用
  6. 干货 | android下使用的渗透工具介绍
  7. 電腦教室的管理與規劃
  8. TIKTOK涨粉变现新玩法
  9. linux——存储结构与磁盘划分。
  10. HTCvive官方开发插件介绍