HashMap和Hashtable

HashTable算法

      散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它經過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的  速度。這個映射函數叫作散列函數,存放記錄的數組叫作散列表數組

  哈希表是種數據結構,它能夠提供快速的插入操做和查找操做。安全

  哈希表算法-概念做用數據結構

  線性表:線性表都是以棧、列隊、字符串、數組等特殊線性表的形式使用的。函數

線性表是一個線性結構,它是一個含有N>=0個節點的有限序列,對於其中的節點,有且有一個開始節點沒有前驅但有一個後續節點,有僅有一個終端節點沒有後續但有一個前驅節點,其它的節點都有且僅有一個前驅和一個後續節點。性能

 

HashMap和Hashtablespa

HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap容許空(null)鍵值(key),因爲非線程安全,效率上可能高於Hashtable。線程

HashMap容許將null做爲一個entry的key或者value,而Hashtable不容許。htm

HashMap把Hashtable的contains方法去掉了,改爲containsvalue和containsKey。由於contains方法容易讓人引發誤解。 繼承

Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。

最大的不一樣是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不須要本身爲它的方法實現同步,而HashMap 就必須爲之提供外同步。 

Hashtable和HashMap採用的hash/rehash算法都大概同樣,因此性能不會有很大的差別。

兩句話總結:

HashMap => 不一樣步、空鍵值、效率高;

Hashtable => 同步、非空鍵值、效率略低

 

在C#中沒有找到hashmap的命名空間。

相關文章
相關標籤/搜索