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
------解决方案--------------------不错!
------解决方案--------------------等下期....
------解决方案--------------------分析的挺好
------解决方案--------------------不错呀!!!!
------解决方案--------------------