五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

面試精選11-談HashSet的工作原理

2022-10-02 09:55 作者:架構(gòu)風清揚-趣學旅程  | 我要投稿

HashSet的存儲原理或者工作原理,主要是從如何保證唯一性來說起。

這里面主要有3個問題,需要回答?

第一,為什么要采用Hash算法?有什么優(yōu)勢,解決了什么問題?

第二,所謂哈希表是一張什么表?

第三,HashSet如何保證保存對象的唯一性?會經(jīng)歷一個什么樣的運算過程?

大家可以先思考,下面來看解讀!


第一,為什么要采用Hash算法?有什么優(yōu)勢,解決了什么問題?

解決的問題是唯一性判斷的效率問題,保證為O(1)的復雜度

其存儲數(shù)據(jù)的底層結(jié)構(gòu)采用的是數(shù)組

當我們往數(shù)組放數(shù)據(jù)的時候,你如何判斷是否唯一?

可以采用遍歷的方式,逐個比較,但是這種效率低,尤其是數(shù)據(jù)很多的情況下,時間復雜度為O(n)

所以,為了解決這個效率低的問題,我們采用新的方式

采用hash算法的關(guān)鍵,是通過調(diào)用存儲對象的hashcode方法得到一個數(shù)值,然后再根據(jù)這個數(shù)值,經(jīng)過一通復雜的固定運算規(guī)則,得到我們要存儲在數(shù)組的下標,如果此時計算的下標位置沒有其他元素,則直接存儲,不用比較,所以最佳的效果可以達到O(1)


此處,我們只會用到hashCode

但是隨著元素的不斷添加,就可能出現(xiàn)“哈希沖突”,不同的對象計算出來的hash值是相同的,這個時候,我們就需要比較,才需要用到equals方法

如果equals相同,則不插入,不相等,則形成鏈表


第二,所謂哈希表是一張什么表?

本質(zhì)是一個數(shù)組,而且數(shù)組的元素是鏈表


以上是JDK1.7的版本實現(xiàn)

在JDK1.8版本之后做了優(yōu)化

優(yōu)化點:隨著元素不斷添加,鏈表可能會越來越長,那么再遍歷鏈表的效率也會下降,所以會優(yōu)化為紅黑樹,具體這個閾值是什么?

大家可以查看下源碼,印象更深刻!


面試精選11-談HashSet的工作原理的評論 (共 條)

分享到微博請遵守國家法律
沅陵县| 麦盖提县| 远安县| 二手房| 普兰县| 自贡市| 清水县| 鄂托克旗| 监利县| 临朐县| 雅安市| 巩留县| 庆安县| 当阳市| 马公市| 澄江县| 曲麻莱县| 保德县| 长春市| 龙游县| 大田县| 商都县| 阿拉善盟| 吉林市| 沂水县| 磐石市| 莒南县| 渝北区| 宜州市| 东宁县| 内丘县| 镶黄旗| 新晃| 安塞县| 邛崃市| 商丘市| 新和县| 自治县| 延庆县| 丘北县| 横峰县|