JAVA底层 (三) TreeMap 红黑树

学习参考:

https://blog.csdn.net/walkerkalr/article/details/81217294

https://blog.csdn.net/qq_42253147/article/details/90452828

  • TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。
  • TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合。
  • TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。
  • TreeMap 实现了Cloneable接口,意味着它能被克隆。
  • TreeMap 实现了java.io.Serializable接口,意味着它支持序列化。
  • TreeMap基于红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的
    Comparator 进行排序,具体取决于使用的构造方法。
  • TreeMap的基本操作 containsKey、get、put 和 remove 的时间复杂度是 log(n) 。
    另外,TreeMap是非同步的。 它的iterator 方法返回的迭代器是fail-fastl的。

红黑树又是二叉查找树的一种。二叉查找树是一种有序的树形结构,优势在于查找、插入的时间复杂度只有O(log n),特性如下:

任意节点最多含有两个子节点。
任意节点的左、右节点都可以看做为一棵二叉查找树。
如果任意节点的左子树不为空,那么左子树上的所有节点的值均小于它的根节点的值。
如果任意节点的右子树不为空,那么右子树上的所有节点的值均大于它的根节点的值。
任意节点的key都是不同的。

JDK1.8后 HashMap 底层结构实现用的就是 数组+(链表、红黑树)实现

使用场景

TreeMap 相比于HashMap 需要是排序的数据 则使用TreeMap。换句话说 你的数据是需要按照一定顺序的 则使用TreeMap

猜你喜欢

转载自blog.csdn.net/qq_37203082/article/details/112902373