2014-12-19 28 views
-4

我有兩個包含HashMap:Java - 哪個hashmap get()方法會更快,爲什麼?

  1. hashmap1 1000(鍵,值)對,例如(1,一種)(2,2)(3,3)(4,4)..(1000,千)
  2. hashmap2與100000(鍵,值)對,例如(1,一種)(2,2)(3,3)..(100000,hundredthousand)

其下面兩個步驟中會比較快,即。 hashmap1.get(100)或hashmap2.get(100),爲什麼?

+0

有你的嘗試過的測試? ,你可以通過編寫循環來測試它。與可能是相同的價值,但不同的關鍵。因爲你不能生成一個,twoo與循環,但沒關係。然後檢查性能,並讓我們知道答案 – Panther

+2

HashMaps在設計上具有O(1)性能。 – Sinkingpoint

回答

3

他們都會在(大約)同時運行。

如果你看一看的HashMap API

此實現提供爲基本操作(get和put)穩定的性能,假定哈希函數將分散的桶中正確的元素。

0

除了@azurefrog的答案,我想提出這一點。

它取決於fast的定義。漸近地說,這兩個操作都將採取O(1),並且與大小n無關,即它是1或100,000或1MM。

但是,當我們考慮HashMap是一般意義上的時候會有一些有趣的含義。它也可能受以下兩個因素的影響。

  1. 底層散列算法必須是無衝突的。
  2. 對象相等也在O(1)中完成。

但是對於手中的情況,兩者在漸近地講時應該在理論上同時進行。

相關問題