2015-05-18 32 views
-1

請解釋下面的語句:使用由java.util.HashSet集合類組什麼是hashSet結構,hashCode方法和散列桶之間的交互?

hashCode方法集合中的元素融入散列桶的迅速恢復。

散列桶和檢索的提及意味着一個HashSet具有某種關係的哈希圖作爲HashSet interface只公開addremovecontains方法,沒有T retrieve(int hashCode)方法。

哈希集是否真的在內部使用哈希碼和哈希桶?或者它以某種方式使用哈希映射?

+1

你是什麼意思的「或者是使用哈希映射」?目前你的問題還不清楚...... –

回答

0

您添加到HashSet值實際上是設置爲keys基本HashMap。 A HashSet使用引擎蓋下的HashMap。所以,HashMap的行爲也應該預計爲HashSet

1

有一個類似的問題在SCJP Certification被問及hashcode方法:

問:20這兩個語句是對hashCode方法真的嗎? (選擇兩項)

答:給定類的hashCode方法可用於測試該類的對象相等和對象不等式。

B. 集合類使用hashCode方法對該集合中的元素進行排序。

C.給定類的hashCode方法可以用於測試該類的對象不等式,但不是對象相等。

D的通過 hashCode方法返回的值的唯一重要的特徵是,值的分佈必須遵循 高斯分佈。

E. hashCode方法被java.util.HashSet集合 類用於將該集合內的元素分組到哈希桶中以用於 快速檢索。

答案:C,E

說明:(這說明從here截取)

如果兩個對象根據equals(Object)方法是相等的,然後 調用hashCode()方法對兩個對象的每一個必須產生相同的整數結果 。據NOT必需的:如果兩個對象根據equals(java.lang.Object)方法是 不等,則調用 的hashCode()方法在各兩個對象的必須產生不同 整數結果。但是,程序員應該意識到, 爲不相等的對象生成不同的整數結果可能會提高散列表的性能。

相關問題