TreeMap 是基于红黑树的实现,是有序的.当我们在开发中需要用到有序的且按大小排列顺序的、不重复的、有映射关系的业务场景时,TreeMap 这个容器可以帮助我们方便的开发.
TreeMap特性
TreeMap实现了两个重要的接口:
SortedMap接口,表示其具备可排序的功能.
元素有序.TreeMap 保证元素有序,使用的是比较的方式.在存储数据的时候,需要对存储的key进行比较.所以,它不允许存储null键,但是可以存储null值.
如何进行比较呢?
- 要保存的元素自己具有比较功能,即:自然排序,元素需要实现Comparable接口.
- 使用一个比较器,可以比较两个对象.即:定制排序,需要在创建TreeMap对象的时候,传递一个比较器(Comparator)给构造器.
NavigableMap接口,表示其具备可导航的功能.
导航:在这个接口中,定义了大量的对范围进行查找的方法.比如,大于某一个元素的集合.这些操作都是查询操作.而TreeMap采用的是红黑树的结构,来存储数据,从而保证效率.
那什么是红黑树呢?
红黑树是一种具有红色和黑色链接的平衡查找树.
有点抽象…
既然TreeMap都已经是红黑树的实现了,那我们完全可以看着源码,来说红黑树呀.
显而易见的是:因为TreeMap需要使用红黑树的数据结构来组织元素,所以我们要查看源码,也是查看添加元素或者删除元素.本文主要是简单阅读添加元素的源码(其实删除的原理