TreeMap(JDK1,mysql优化视频教程

本文详细介绍了Java中TreeMap的数据结构及其操作,包括基于红黑树的查找、遍历、插入和删除的原理。文章通过对TreeMap源码的分析,揭示了其实现细节,特别是遍历时如何保证键的有序性,以及插入操作中对红黑树性质的维护。
摘要由CSDN通过智能技术生成

概览


TreeMap继承自AbstractMap,并实现了 NavigableMap接口。NavigableMap 接口继承了SortedMap接口,SortedMap 最终继承自Map接口,同时 AbstractMap 类也实现了 Map 接口。以上就是 TreeMap 的继承体系,描述起来有点乱,不如看图了:

在这里插入图片描述

上图就是 TreeMap 的继承体系图,比较直观。这里来简单说一下继承体系中不常见的接口NavigableMapSortedMap,这两个接口见名知意。先说 NavigableMap 接口,NavigableMap 接口声明了一些列具有导航功能的方法,比如:

/**

  • 返回红黑树中最小键所对应的 Ent
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

ry

*/

Map.Entry<K,V> firstEntry();

/**

  • 返回最大的键 maxKey,且 maxKey 仅小于参数 key

*/

K lowerKey(K key);

/**

  • 返回最小的键 minKey,且 minKey 仅大于参数 key

*/

K higherKey(K key);

// 其他略

通过这些导航方法,我们可以快速定位到目标的 key 或 Entry。至于 SortedMap 接口,这个接口提供了一些基于有序键的操作,比如

/**

  • 返回包含键值在 [minKey, toKey) 范围内的 Map

*/

SortedMap<K,V> headMap(K toKey)😭);

/**

  • 返回包含键值在 [fromKey, toKey) 范围内的 Map

*/

SortedMap<K,V> subMap(K fromKey, K toKey);

// 其他略

以上就是两个接口的介绍,很简单。至于 AbstractMap 和 Map 这里就不说了,大家有兴趣自己去看看 Javadoc 吧。关于 TreeMap 的继承体系就这里就说到这,接下来我们进入细节部分分析。

源码分析


JDK 1.8中的TreeMap源码有两千多行,还是比较多的。本文并不打算逐句分析所有的源码,而是挑选几个常用的方法进行分析。这些方法实现的功能分别是查找、遍历、插入、删除等,其他的方法小伙伴们有兴趣可以自己分析。TreeMap实现的核心部分是关于红黑树的实现,其绝大部分的方法基本都是对底层红黑树增、删、查操作的一个封装。如简介所说,只要弄懂了红黑树原理,TreeMap 就没什么秘密了。关于红黑树的原理,红黑树详细分析,本篇文章不会对此展开讨论。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值