继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java集合详解(六):TreeMap原理解析

幕布斯7119047
关注TA
已关注
手记 432
粉丝 28
获赞 99

概述

本文是基于jdk8_271版本进行分析的。

TreeMap是一个有序的key-value双列集合,底层基于红黑树实现。该映射根据其键的自然顺序进行排序,或者根据创建时提供的Comparator进行排序

数据结构

图片描述

  • 实现继承关系

1 public class TreeMap<K,V>
2 extends AbstractMap<K,V>
3 implements NavigableMap<K,V>, Cloneable, java.io.Serializable

  1. AbstractMap:继承AbstractMap抽象类,使用实现的公共方法。
  2. NavigableMap:NavigableMap继承SortedMap接口,对SortedMap进一步扩展,它是一个可导航的键-值对集合。具有了为给定搜索目标报告最接近匹配项的导航方法。
  3. Cloneable:重写拷贝方法。
  4. Serializable:重写序列化方法。
  • 成员变量

1     // 比较器
2     private final Comparator<? super K> comparator; 3     // 根节点
4     private transient Entry<K,V> root; 5     // 元素总数量
6     private transient int size = 0; 7     // 修改次数
8     private transient int modCount = 0;    
  • 构造函数
 1     public TreeMap() { 2         comparator = null;
 3     }
 4     public TreeMap(Comparator<? super K> comparator) { 5         this.comparator = comparator; 6     }
 7     public TreeMap(Map<? extends K, ? extends V> m) { 8         comparator = null;
 9 putAll(m); 10 } 11     public TreeMap(SortedMap<K, ? extends V> m) { 12         comparator = m.comparator(); 13         try { 14             buildFromSorted(m.size(), m.entrySet().iterator(), null, null); 15         } catch (java.io.IOException cannotHappen) { 16         } catch (ClassNotFoundException cannotHappen) { 17 } 18     }

作者: Yanci丶
出处:https://www.cnblogs.com/Y2EX/p/14811286.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP