24-TreeMap

类介绍

类定位

TreeMapAbstractMap的子类,他实现了AbstractMap中空出来的entrySet(),put()方法做了自己的实现,从而可以作为一个完整的基础类对外赋能。他在维护内部的数据时使用了红黑树,从而大大提升了插入、删除、搜索的效率。在缓存大量数据时有很好的作用。【但是貌似我们平时还是HashMap用的多一点】

类继承关系分析

先上图:

1.png
  • SortedMapMap的基础上新加了比较器,并增加了根据顺序获得某区间数据、获得头尾数据的功能

  • AbstractMapMap的基础上对非核心方法进行了实现

  • NavigableMapSortedMap的基础上对边缘取值和逆向遍历两个方面做了更加详细的定义

  • Serialable,Cloneable是java的基本的接口,他们分别表示可以序列化和反序列化/可以浅层复制

综上,TreeMap是以红黑树算法为原理,实现了一个存储中有序排列的高效Map

注意事项

这个类反正我用的不多,把他当做一个红黑树的实现类好好看看吧。在前面我记录红黑树时已经详细介绍过TreeMap的红黑树结构修改思路了。就不再赘述了。

源码介绍

这个情况有点特殊,情况如下:

  1. 和算法相关的,比较难理解的东西我在红黑树学习时介绍过了
  2. 和集合相关的,都是老套路,说着也没啥意思

所以,决定尝试新思路:不再做源码的堆砌,我们主要分析类的设计结构,对重要的地方集中介绍,不重要的一笔带过。这样分析是为了能对整个类的架构有一个了解。

架构如下,【我们忽略了和Spliterator相关的方法,那个我们最后再说】

2.png

知识扩展

TreeMapHashMap对比:

1、实现
TreeMap:SortMap接口,基于红黑树
HashMap:基于哈希散列表实现
2、存储
TreeMap:默认按键的升序排序
HashMap:随机存储
3、遍历
TreeMap:Iterator遍历是排序的
HashMap:Iterator遍历是随机的
4、性能损耗
TreeMap:插入、删除
HashMap:基本无
5、键值对
TreeMap:键、值都不能为null
HashMap:只允许键、值均为null
6、安全
TreeMap:非并发安全Map
HashMap:非并发安全Map
7、效率
TreeMap:低

HashMap:高

你可能感兴趣的:(24-TreeMap)