实现了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:新节点的父节点(左孩子节点)颜色是红色的,而父节点的兄弟节点颜色是红色的。