国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

hashmap原理面試 hashmap在,擴(kuò)容,時(shí)為什么是乘以2?

hashmap在,擴(kuò)容,時(shí)為什么是乘以2?模運(yùn)算可以通過位運(yùn)算H&(length-1)得到,所以效率最高~]。。。沒有容量擴(kuò)展的示例:如果10個(gè)存儲(chǔ)桶中有1W數(shù)據(jù),并且每個(gè)存儲(chǔ)桶平均有1000個(gè)

hashmap在,擴(kuò)容,時(shí)為什么是乘以2?

模運(yùn)算可以通過位運(yùn)算H&(length-1)得到,所以效率最高

~]。。。

沒有容量擴(kuò)展的示例:

如果10個(gè)存儲(chǔ)桶中有1W數(shù)據(jù),并且每個(gè)存儲(chǔ)桶平均有1000個(gè)數(shù)據(jù),那么即使jdk8中默認(rèn)有8個(gè)以上的存儲(chǔ)桶,它也會(huì)將您變成一棵紅黑樹,那么您查找元素的平均時(shí)間是log(base 2)1000。

另一方面,如果擴(kuò)容。過程同上,但平均時(shí)間會(huì)大大縮短。

還有誰(shuí)說12個(gè)會(huì)擴(kuò)大?這只是默認(rèn)值。

JDK文檔明確建議在初始化HashMap時(shí),應(yīng)根據(jù)將來存儲(chǔ)的數(shù)據(jù)量一次性指定其容量和加載因子。盡量避免擴(kuò)展(這將導(dǎo)致額外的成本),同時(shí),它不應(yīng)該浪費(fèi)內(nèi)存

1。存儲(chǔ)方法:Java中的HashMap以鍵值的形式存儲(chǔ)元素。2、 調(diào)用原則:HashMap需要一個(gè)hash函數(shù),該函數(shù)使用hashcode()和equals()方法向集合中添加和檢索元素。調(diào)用put()方法時(shí),HashMap計(jì)算密鑰的哈希值,并將密鑰-值對(duì)存儲(chǔ)在集合中相應(yīng)的索引中。如果鍵已存在,則該值將更新為新值。3、 其他熱點(diǎn)特性:HashMap的一些重要特性是容量、負(fù)載因子和閾值調(diào)整。

HashMap實(shí)現(xiàn)了map接口,主要為客戶提供三種數(shù)據(jù)顯示方式:只查看鍵列表;只查看值列表;或者以鍵值形式成對(duì)查看數(shù)據(jù)。map接口沒有定義如何存儲(chǔ)數(shù)據(jù),也沒有指定如何確定鍵是否相同。因此,并非所有map實(shí)現(xiàn)都與hashcode方法相關(guān)。例如,treemap要求對(duì)象實(shí)現(xiàn)comparator接口,并通過其compare方法(而不是hashcode和equals)比較兩者是否一致。同樣,如果我們自己實(shí)現(xiàn)map接口,也可以直接用數(shù)組來存儲(chǔ)數(shù)據(jù),用==來判斷鍵值是否一致,這樣仍然可以完全滿足map接口的定義。