我的jdk源码(十九):TreeMap类 红黑树实现的map结构
一、概述 TreeMap类是一个有序的key-value的集合,与HashMap不同,TreeMap底层只有一个红黑树的结构(对红黑树不了解或者不熟悉的和觉得文字太枯燥的,推荐一个在线演示地址: https://rbtree.phpisfuture.com/ ),结点TreeMap类的内部类Entry,维护树结构;并且由于红黑树的特性,使得元素保存在TreeMap中默认是根据key值的自然顺序排序,也可以传入特定的比较器实例使TreeMap维持指定的顺序。所以,当你既想利用Map的高效查找特性,又想维持元素特定的顺序,那么你就需要用到TreeMap类。 二、源码分析 1. 类的声明 public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable 可以看到TreeMap类继承自AbstractMap类,并且实现了NavigableMap接口、Cloneable接口以及Serializable接口。具体如下: a. 继承于AbstractMap,所以它是一个Map,即一个key-value集合。 b. 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。 c.