2014-01-31 49 views
-2

這裏我只想問一個我在Java面試中遇到的問題。 問題就像哈希表是如何工作的。我解釋並回答了以下所有問題。但我堅持一個問題,即: 在集合或更少的桶中擁有更多桶對象會更好嗎?爲什麼?請幫助我在這裏與您的看法Java集合:集合框架:較少的存儲桶可以很好地存儲集合中的對象或大量的存儲桶?

+0

你覺得呢? –

+0

@ user2310289:我告訴他們最好有更合適的散列碼方法,這樣每次都可以生成唯一的散列碼,併爲每個對象創建新的存儲桶。但在這種情況下,它也需要更多時間來定位另一種方式是,如果我們開發hashcode方法,它將爲所有對象返回相同的hashcode,那麼再次使用equals方法來消耗更多時間來搜索單個bucket中的對象。在討論結束後,我們應該對於每個對象沒有單獨的桶並且具有單個桶也不是有效的。 – Ganesh

+0

@Rohan:桶的數量足夠大以至於一些桶未被使用,但不是完全不成比例的數字通常是有幫助的。許多計算機的緩存空間有限,因此擁有一個包含256個桶的哈希表(其中一些包含六個項目)可能會超過一個包含1,048,576個桶的表,其中絕大多數桶沒有物料,也沒有物料有不止一個,尤其是在尋找許多不在表格中的項目時。 – supercat

回答

0

最好的HashMap =獨特的Ids - 一個對象的桶 - 當你知道密鑰時最快訪問對象。

+0

但是,如果一個對象有一個存儲桶,那麼由於可能存在大量的存儲桶存在,因此也會花費時間來搜索特定散列碼的存儲桶。 – Ganesh

+0

不需要搜索 - 哈希映射爲您提供了通過哈希代碼即時訪問桶,就像數組索引一樣。 – Scorcher

+0

好的...謝謝我不知道這個即時訪問的概念。 – Ganesh