原文:面試題:為什么 Map 桶中超過 8 個才轉為紅黑樹?

為什么 Map 桶中超過 個才轉為紅黑樹 JDK . 的 HashMap 和 ConcurrentHashMap 都有這樣一個特點:最開始的 Map 是空的,因為里面沒有任何元素,往里放元素時會計算 hash 值,計算之后,第 個 value 會首先占用一個桶 也稱為槽點 位置,后續如果經過計算發現需要落到同一個桶中,那么便會使用鏈表的形式往后延長,俗稱 拉鏈法 ,如圖所示: 當鏈表長度大於或等於 ...

2021-01-13 15:31 2 377 推薦指數:

查看詳情

阿里面試題:為什么Map個數超過8才轉為

這是筆者面試阿里時,被問及的一個問題,應該不少人看到這個問題都會一面懵逼。因為,大部分的文章都是分析鏈表是怎么轉換成的,但是並沒有說明為什么當鏈表長度為8的時候才做轉換動作。筆者第一反應也是一樣,只能初略的猜測是因為時間和空間的權衡。 要弄明白這個問題,我們首先要明白為什么要轉換,這個問題 ...

Tue Mar 26 18:51:00 CST 2019 2 3040
面試題——輕松搞定面試問題

版權所有,轉載請注明出處,謝謝!http://blog.csdn.net/silangquan/article/details/18655795 連續兩次面試都問到了,關鍵兩次都沒有答好,這次就完整地來學習整理一下。 沒有學習過的同學請參考: << ...

Wed Apr 22 01:29:00 CST 2015 2 29054
Java面試題原理

原理: 每個節點都只能是紅色或黑色的; 根節點是黑色的; 每個葉節點(空節點)是黑色的; 如果一個節點是紅色的,那么他的子節點都是黑色的; 從任意一個節點到其每個子節點的路徑都有相同數目的黑色節點; ...

Sat Feb 23 11:01:00 CST 2019 0 1212
面試題:為什么用不用普通的AVL

在Jdk1.8版本后,Java對HashMap做了改進,在鏈表長度大於8的時候,將后面的數據由鏈表改為了存在,以加快檢索速度。 有疑問為什么是使用而不是AVL,AVL是完全平衡二叉樹阿? 最主要的一點是: 在CurrentHashMap是加鎖了的,實際上是讀寫鎖,如果寫 ...

Tue Jan 19 22:42:00 CST 2021 0 439
面試常考問題

轉載自http://blog.csdn.net/silangquan/article/details/18655795 沒有學習過的同學請參考: <<Introduction to Algorithms>> Chapter 13 Red-Black ...

Sat Oct 03 23:42:00 CST 2015 0 7580
為什么HashMap(鏈表)的長度超過8會轉換成

百度了一下,感覺能說清楚的並不多,所以在此記錄一下。 首先說一說轉換為的必要性: 的插入、刪除和遍歷的最壞時間復雜度都是log(n), 因此,意外的情況或者惡意使用下導致hashCode()方法的返回值很差時, 性能的下降將會是"優雅"的,只要Key具有可比性。 但由於 ...

Sun Apr 21 06:09:00 CST 2019 0 2026
為什么HashMap(鏈表)的長度超過8才會轉換成

百度了一下,感覺能說清楚的並不多,所以在此記錄一下。 首先說一說轉換為的必要性:的插入、刪除和遍歷的最壞時間復雜度都是log(n),因此,意外的情況或者惡意使用下導致hashCode()方法的返回值很差時,性能的下降將會是"優雅"的,只要Key具有可比性。 但由於TreeNodes ...

Wed Jun 26 18:49:00 CST 2019 0 3661
map的實現--

一、什么是??? 首先是一棵搜索二叉樹,的每一個結點的顏色不是黑色就是紅色。它的特性如下: 1、根節點是黑色 2、每一個結點不是黑色就是紅色 3、不能有連續的兩個紅色結點 4、從任意一個結點出發,到后代中空指針的路徑 ...

Sun Jun 24 07:54:00 CST 2018 0 911
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM