- TreeMapd的底层实现是红黑树,红黑树是二叉查找树
- 左旋:逆时针旋转两个节点,让一个节点被其右子节点取代,而该节点成为右子节点的左子节点
- 右旋:顺时针旋转两个节点,让一个节点被其左子节点取代,而该节点成为左子节点的右子节点
TreeMap的节点数据结构,可以找到自己的父亲和左右孩子,TreeMap的成员变量modCount记录了TreeMap的调整次数。
此外对于并发性相对较低的并行程序可以使用Collections.synchronizedSortedMap将TreeMap进行包装,返回TreeMap的同步映射,也可以提供较好的效率。TreeMap增加、删除、修改一个节点的时间复杂度是O(nlogn)。// 红黑树结构的调整次数 private transient int modCount = 0; Entry<K,V> implements Map.Entry<K,V> { //key,val是存储的原始数据 K key; V value; //定义了节点的左孩子 Entry<K,V> left; //定义了节点的右孩子 Entry<K,V> right; //通过该节点可以反过来往上找到自己的父亲 Entry<K,V> parent; //默认情况下为黑色节点,可调整 boolean color = BLACK; }
【源码学习】之TreeMap
猜你喜欢
转载自blog.csdn.net/u010659877/article/details/108768235
今日推荐
周排行