HashTable的故事

很早之前,在講HashMap的時(shí)候,我們就說過hash是散列,把...弄碎的意思。hashtable中的hash也是這個(gè)意思,而table呢,是指數(shù)據(jù)表格,也就是說hashtable的本意是指,一份被數(shù)據(jù)被打散,分散在各處的數(shù)據(jù)表格。

HashTable,作為jdk中,極早提供的容器類(jdk1.0),同時(shí)是支持?jǐn)?shù)據(jù)并發(fā)的類,其在項(xiàng)目中的使用卻并不是很廣泛。在我所經(jīng)歷的項(xiàng)目中,開發(fā)人員往往喜歡使用hashMap然后再通過鎖,創(chuàng)造出線程安全的環(huán)境。即使是后來推出concurrentHashMap,其使用的地方也并沒有特別廣泛。究其原因,我覺得是由于開發(fā)人員對于其他hash容器并不熟悉。更愿意使用已有的較為熟悉的hash容器,即使他們在此處的應(yīng)用比較費(fèi)事。

好了,廢話不多說,我們直接開始進(jìn)入正題吧:

hashTable繼承自dic類,同時(shí)實(shí)現(xiàn)了map接口和Cloneable、Serializable兩個(gè)接口,代表該類是可復(fù)制、序列化的類。

public class Hashtable<K,V>    extends Dictionary<K,V>    implements Map<K,V>, Cloneable, java.io.Serializable

ps:dic類和map類較為相似,是一個(gè)抽象的hash映射類,包含了一些簡單的空方法和接口。

private transient Entry<?,?>[] table;

瞬時(shí)數(shù)組變量,它就是hashtable中,最核心的數(shù)據(jù)存儲區(qū)域。

 

        		

網(wǎng)友評論