TreeMap集合怎样保证有序性
首先看一下TreeMap集合的使用,TreeMap集合也是键值对的,我们添加下面四个元素
package com.tset.one;
import java.util.TreeMap;
public class TestTreeMap {
public static void main(String[] args) {
TreeMap<String,Integer> treeMap = new TreeMap<>();
treeMap.put("tom",99);
treeMap.put("jack",73);
treeMap.put("bob",85);
treeMap.put("jery",62);
treeMap.forEach((k,v) -> System.out.println(k + ": " + v));
}
}
bob: 85
jack: 73
jery: 62
tom: 99
发现遍历出来的结果是有序的,按照key的升序依次遍历,联想到Hash Map,它遍历出来的结果是无序的,它是按照key的hash进行散列的,那TreeMap是怎么样保证节点遍历出来是有序的呢?我们需要看一下源代码 它是一个红黑树,我们知道红黑树是一个平衡树,可以保证我们的节点有序,显然TreeMap底层用红黑树来保证节点的有序性,通过查看TreeMap的成员变量 我们可以发现root是红黑树的根节点
TreeMap底层
- TreeMap实现了SotredMap接口,它是有序的集合。
- TreeMap底层数据结构是一个红黑树,每个key-value都作为一个红黑树的节点。
- 如果在调用TreeMap的构造函数时没有指定比较器,则根据key执行自然排序。
以上内容仅供参考学习,如有侵权请联系我删除! 如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。 您的鼓励就是博主最大的动力!
|