資料結構之HashTable與HashMap

2021-09-01 23:01:57 字數 2085 閱讀 8970

首先介紹一下hashtable

與hashmap

。hashtable類實現乙個雜湊表,該雜湊表將鍵對映到相應的值。任何非 null 物件都可以用作鍵或值。

hashmap是基於雜湊表的map 介面的實現。此實現提供所有可選的對映操作,並允許使用 null 值和 null 鍵。hashmap不保證對映的順序,特別是它不保證該順序恆久不變。。

現對hashmap

和hashtable

的區別總結如下:

1.hashtable與

hashmap

繼承的介面不同。

hashtable繼承的是

dictionary

介面,而

hashmap

繼承的是

map介面。

2.寫程式的時候,hashmap

中儲存的

key值和

value

值可以為

null

,而hashtable

中儲存的

key值和

value

值都不可以是

null

。在hashmap

中,值為

null

的key

只能有乙個

;而值為

null

的value

可以有多個,每乙個

value

對應於不同的

key。

在使用hashmap

get

(

object

key)

方法時要注意,當返回值為

null

時,代表著兩種含義,一種是

hashmap

中沒有相應的

key鍵,另一種是該鍵對應的值是

null

。所以我們要判斷

hashmap

中是否存在某個鍵的時候,不能使用get

(

object

key)

方法來進行判斷,而應該用containskey

(

object

key)

方法來判斷。

3.hashtable中有contains

(

object

value)

containskey

(

object

key),containsvalue

(

object

value)

方法;而在hashmap

中去除了

contains

(

object

value)

方法,只有

containskey

(

object

key),containsvalue

(

object

value)

方法方法,因為

contains

(

object

value)

方法容易讓人產生誤解。

4.hashmap與

hashtable

最大的不同是:

hashmap的方法不是

synchronized

(同步)的,而hashtable

的方法是

synchronized的。

即多個執行緒訪問hashtable

時,不需要再為它的方法提供專門的操作來實現同步,它自身就擁有同步機制;而

hashmap

則需要為它的方法實現外同步。

hashmap的同步問題可通過

collections

的乙個靜態方法得到解決,使用 collections.synchronizedmap

(map m) 方法來「包裝」該對映。

資料結構與演算法之雜湊 hash table

1 雜湊 由資料項的值來確定資料存放的位置。雜湊表中的儲存位置被成為槽。2 雜湊函式 實現從資料項到儲存槽的轉換的函式稱為雜湊函式。3 槽號 雜湊函式返回的資料項的儲存位置。求餘雜湊 方法 將資料項除以雜湊表的大小,得到的餘數作 為槽號。實際上 求餘數 方法會以不同形式出現在所有 雜湊函式裡 因為雜...

資料結構與演算法 Hash Table

參考自 談談 hash table 雜湊表是一種資料結構,實現key value的快速訪問。之前說過陣列可以實現快速隨機訪問,所以雜湊表肯定會使用到陣列。在這裡,我們把每乙個陣列的單元叫做乙個bucket 桶 雜湊表的大小最好是素數。雜湊表是乙個在時間和空間上做出權衡的經典例子。如果沒有記憶體限制,...

資料結構 HashTable

基本介紹 雜湊表管理學生資訊概圖 示例 data public class student public student int id,string name,string string address public class studentlinkedlist 如果鍊錶為空,直接將節點新增到鍊錶...