TreeMap实现原理

实现了SortedMap接口,是一个有序的集合,是一个红黑树接口,每个key-vlaue作为红黑树的节点,没有指定顺序则是根据key执行自然排序。

1、继承了AbstractMap类,实现了接口

implements NavigableMap<K,V>, Cloneable, java.io.Serializable

可以自然排序,可以定制排序,Entry root = null  红黑树的根节点;size存放键值对的数量。

1)自然排序:所有的key必须实现Comparable接口,所有的key都是同一类的对象;

2)定制排序:创建TreeMap对象传入一个Comparator对象,改对象负责key进行排序,采用定制排序不要去key实现comparable接口。

2、其方法

put():
get():根据不同的排序比较方法定位需要的数据,检索速度时间复杂度为O(log(n));

remove():

3)红黑树

是一个更高效检索二叉树,每个节点只能是红色或者黑色;根节点永远是黑色;所有叶子的子节点都是空节点,并且都是黑色;每个红色节点的两个子节点都是黑色,没有连续的红色节点;从人一个节点到其子树中的每个叶子节点的路径中所包含相同数量的黑色节点。

1)插入节点

默认为红色的节点插入到树中

情形1:新插入的节点是红黑树的根节点,没有父节点,无需任何操作,如果上层有,直接改变为黑色;

情形2:新节点的父节点颜色是黑色,则直接插入;

情形3:新节点的父节点(左孩子节点)颜色是红色的,而父节点的兄弟节点颜色是红色的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值