5 回答

TA貢獻1790條經(jīng)驗 獲得超9個贊
Hash
中文翻譯為散列,其實就是用于表示事物特征的一串特征碼。
事物和其Hash
其實就像人和指紋的關系,人完整的相貌有眼鼻口舌手腳等等等等,而指紋就是一個能鑒別不同人之間的特征,所以可以理解問指紋就是人的Hash
。Hash
的用處很多,比如驗證、加密等都可以用到Hash
。
用于驗證這就無須贅述了吧,人可以通過指紋來驗證,文件、對象等等都可以通過其自身的Hash
來驗證,比如國外的一些網(wǎng)站提供下載時,一般還會提供一份下載文件的Hash
(算法各有不同),以幫助下載者驗證下載的文件是否正確(文件可能因為網(wǎng)絡錯誤或者中間者攻擊而被篡改)。不過Hash
提取的只是特征,就行指紋一樣,雖然說難以找到指紋一樣的人,但并不代表找不到,所以Hash
還存在一種問題,就是Hash沖突
,即兩個不同的事務其采集的特征是一致的。這種情況下我們可以采用不同的Hash
算法進一步加以比較,比如指紋相同再比較一下腳紋,不過最終的辦法還是真正全身比較。
而正是因為Hash
只提取了事物的部分信息,所以用于加密也是非常可靠的,就如通常網(wǎng)站都會采用Hash
來對密碼進行加密,其作用就是即使密碼泄露,破解者也無法知道密碼到底是什么,就好像你知道指紋,但你卻難以找到擁有這個指紋的人是誰。
在Java
中HashMap
和HashTable
都是通過Hash算法
來實現(xiàn)高效Map
的方式,其區(qū)別僅是一些細節(jié)限制方面有所不同,和Hash算法
本身并沒有什么關系。

TA貢獻1829條經(jīng)驗 獲得超7個贊

TA貢獻1844條經(jīng)驗 獲得超8個贊
呃,你可以把它看成一個DNA,每個生物的DNA都是不一樣的(在這里請不要舉雙胞胎DNA一樣的例子啦)。那么在計算機中,每個對象的Hash(DNA)都是不一樣的。
Hashmap是一個數(shù)組和鏈表的結合體(在數(shù)據(jù)結構稱“鏈表散列“)。
HashTable是比較古老的東西了..主要區(qū)別在于HashMap 允許空(null)鍵值(key)
添加回答
舉報