TreeMap基于红黑树实现,增删改查的平均和最差时间复杂度均为O,最大特点时Key有序。
key必须实现Comparable接口或者提供Comparator比较器,所以key不允许为null。
HashMap 依靠hashCode和equals去重,而TreeMap 依靠Comparable 或者Compartor。
TreeMap 排序时,如果比较器不为空就会优先使用比较器的Compare方法,否则使用key实现的。
Compareable的Compareto方法,两者都不满足会抛出异常。 TreeMap 通过put和deletEntry实现增加和删除树节点。插入新的节点的规则有三个:一是需要调整的新节点总是红点。插入新节点的父节点时黑色的,不需要调整。如果插入新节点的父节点时红色的,由于红黑树不能出现相邻红色、进入循环判断,通过重新这色或者对比调整。TreeNMap的插入操作就是按照Key的对比往下遍历,大于节点值向右查找,小于向左查找,先按照二叉查找的特性操作,后续会重新着色和旋转,保持红黑树的特性