从源代码断点分析TreeMap的put,get方法

看看文档,写点东西。。。

 今天才发现原来源代码可以直接进入debugger 调试模式。真是厉害的发现,哈哈哈。

===================================================================

下面会从两个方面来分析TreeMap。 

       --- jdk文档(我用的是jdk1.7中文)来理论说明什么是TreeMap,TreeMap的特性。

       --- 通过源代码(jdk1.8)来调试一个示例,看看TreeMap 的put,get方法的整体数据流向。

文档解释阶段:

1、 什么是TreeMap?

    基于红黑树可排序的map实现。 两个关键词: 红黑树,可排序。  红黑树是二叉树的一种。后续再去了解。

另外一个关键词 可排序,顾名思义 就是可以按照自己定义的规则来给元素排顺序。

  

2、宏观了解一下TeeMap主要的继承关系。

 TreeMap<K,V>
    extends AbstractMap<K,V>
    implements NavigableMap<K,V>, Cloneable, java.io.Serializable
public interface NavigableMap<K,V> extends SortedMap<K,V> {
public interface SortedMap<K,V> extends Map<K,V> {

这个就是TreeMap的全部继承或接口关系。其中:NavigableMap 提供了截取Map视图的方法;

SortedMap<K,V> 提供了 排序的方法。 Map<> 提供了最基本方法。具体方法如下:

==========================================================

3、关于排序问题:

 是一个关于键的整体排序, 是对key的排序。而不是value。 排序有两种实现方式:

a、键的《自然排序》来进行排序 ------ 插入有序映射的所有键都必须实现 Comparable 接口 ,然后通过 k1.compareTo(k2)这样的方法来比较。

b。创建TreeMap时,指定比较器 Compatator 来进行比较排序。

所有TreeMap都提供了4个标准的构造方法:

1) void(无参数)构造方法,它创建一个空的有序映射,按照键的自然顺序进行排序。

2) 带有一个 Comparator 类型参数的构造方法,它创建一个空的有序映射,根据指定的比较器进行排序。

3) 带有一个 Map 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系与参数相同,按照键的自然顺序进行排序。

4) 带有一个 SortedMap 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系和排序方法与输入的有序映射相同。无法保证强制实施此建议,因为接口不能包含构造方法。

====================================================================

put ,get 方法的实现涉及到了红黑树的增加节点,和获取节点操作。  这里我先不进一步了解红黑树。  另外本来想把示例的调试过程 贴出来, 现在变得不用了。

下面这篇博文我感觉写的可以,下次再忘记的话就直接看这篇博文吧。 通过红黑树详解TreeMap


强烈给自己的建议: 给源码断点调试,通过数据流向更能理解源码意图。

=======================================================

红黑树真恶心。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值