TreeMap是jdk中基于红黑树的一种map实现。HashMap底层是使用链表法解决冲突的哈希表,LinkedHashMap继承自HashMap,内部同样也是使用链表法解决冲突的哈希表,但是额外添加了一个双向链表用于处理元素的插入顺序或访问访问。
既然TreeMap底层使用的是红黑树,首先先来简单了解一下红黑树的定义。
红黑树是一棵平衡二叉查找树,同时还需要满足以下5个规则:
- 每个节点只能是红色或者黑点
- 根节点是黑点
- 叶子节点(Nil节点,空节点)是黑色节点
- 如果一个节点是红色节点,那么它的两个子节点必须是黑色节点(一条路径上不能出现相邻的两个红色节点)
- 从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点
红黑树的这些特性决定了它的查询、插入、删除操作的时间复杂度均为O(log n)。