日期:2014-05-20  浏览次数:20693 次

HashMap和Hashtable 之原代码详解 (本人原创)
Hashtable从JDK1.0就已经有了,   所以让我们先来看看它是怎么工作,   然后有浅入深,   来研究HashMap的原理,   以及两者的不同点.

Hashtable有几个主要的字段,   如下,

        /**
          *   The   hash   table   data.
          */
        private   transient   Entry[]   table;

        /**
          *   The   total   number   of   entries   in   the   hash   table.
          */
        private   transient   int   count;

        /**
          *   The   table   is   rehashed   when   its   size   exceeds   this   threshold.     (The
          *   value   of   this   field   is   (int)(capacity   *   loadFactor).)
          *
          *   @serial
          */
        private   int   threshold;


其中最重要的就是那个table数组了.   它就是整个hashtable的基本数据结构!   在来看一下这个字段
private   transient   Entry[]   table;

可以看到,   hashtable的基本数据结构就是,   一个包涵Entry类的二维数组.   而这个Entry类是hashtable的内在类,   它其实是一个单向链,   让我们详细分析一下.


      private   static   class   Entry <K,V>   implements   Map.Entry <K,V>   {
int   hash;
K   key;
V   value;
Entry <K,V>   next;
...
...

看到这里有没有想到学校里教的数据结构原理这门课呢?   Entry类就是定义了一个很简单的单向链结构,   它里面包括key,   value和下个Entry类的对象next.
在这里我在强调一下,   hashtable的数据结构就是一个包涵单向链的二维数组.

(未完待续)

------解决方案--------------------
支持下~~
------解决方案--------------------
xie xie 完了?
------解决方案--------------------
HashMap有看头,支持
------解决方案--------------------
支持下
------解决方案--------------------
等下文...
------解决方案--------------------
ding
------解决方案--------------------
等什么下文啊,你打开src.zip文件就是jdk的srouce,你爱怎么看怎么看,不过楼主还是辛苦了
------解决方案--------------------
up
------解决方案--------------------
记号一个
------解决方案--------------------
暂时没时间,晚上回来和你一起讨论,嘿嘿,你说的一而不一定对哦 :)
------解决方案--------------------
Thanks a lot
------解决方案--------------------
不错!
------解决方案--------------------
等下期....
------解决方案--------------------
分析的挺好
------解决方案--------------------
不错呀!!!!
------解决方案--------------------