java TreeMap学习
前言
也就是它的查找保证了效率。
频繁的新增删除会导致树结构的移动变更树操作效率低下。
comparable comparator
在分析TreeMap之前先要了解一下这两个接口。他们是TreeMap的经常用到的工具方法
|
|
参考文章http://blog.csdn.net/mageshuai/article/details/3849143
comparable
这两个都是用来实现集合内部元素比较排序。comparable是集合元素是否显示comparable接口。
如果对象没有实现,集合内部会采用默认的自然key进行排序重复判断排序comparator
comparator相当于一个外部专用比较器。当这个对象的自比较或者是他们提供的比较方法不能满足
时可以采用自己定义专用比较器的方式。用comparator是策略模式。不改变自身二是
用一个外部策略对象来改变他的行为。
数据结构定义
|
|
定义基本的数据结构
|
|
主要是属性的定义
构造方法
|
|
主要是对红黑树定义,红黑树最基本的结点entry应该包括:key、value、parent、left、right、color。并且对key进行了hash equals运算用来去重。
新增方法put
|
|
新增方法主要是对集合比较器的判断。采用不同的比较方式,采用递归的方法来判定新增元素处于
集合的位置。最后进行红黑书结构调整fixAfterInsertion();红黑树定义
- 没一个结点或者是红色或者是黑色
- 根是黑色的
- 每个叶结点,即空结点(NIL)是黑的。
- 如果一个结点是红色的那么他的子节点都是黑色的
- 对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。
删除方法
|
|
先查询再删除
|
|
找到结点删除节点重新平衡红黑书
|
|