我最近才知道,在Java中8名哈希映射使用二叉樹而不是鏈表和散列碼作爲分支factor.I理解,在高碰撞的情況下,查找是(log n)的由O至O (n)通過使用二叉樹。我的問題是它有什麼好處,因爲分期償還的時間複雜度仍然是O(1),並且如果您強制通過爲所有的散列碼提供相同的哈希碼來強制將所有條目存儲在同一個桶中我們可以看到重要的時間差異,但是他們正確的頭腦中沒有人會這樣做。爲什麼Java 8中的哈希映射使用二叉樹而不是鏈接列表?
二叉樹也使用它存儲左側和右側nodes.Why增加空間複雜度時存在時間複雜度完全沒有改善,除了一些虛假的測試情況下比單鏈表更多的空間。
這不是辯論。我引用:*我的問題是它真的有什麼好處呢[...]也許如果我們可以看到明顯的時間差異,但他們正確的頭腦中沒有人會這樣做。所以你的意思是說它的設計是爲了處理一個沒有人在他們正確的頭腦中會做的事情,因此,開發者**明確地處理了一個愚蠢的情況,因此開發者是愚蠢的,而你持有真理。我建議改寫你的問題。 – Tunaki
你的問題沒有意義。如果你認爲散列衝突不會發生,那麼二叉樹不會消耗更多空間,因爲二叉樹只有在有*散列衝突時纔會使用。更確切地說,在實現從鏈表切換到二叉樹之前,碰撞次數必須超過閾值。 – Holger
@Tunaki我特意指人們故意試圖說明這種情況,如果我認爲沒有其他更多的東西,我就不會將它作爲一個問題。 – user1613360