最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的工作原理的評論 (共 條)

分享到微博請遵守國家法律
北川| 安庆市| 衡东县| 吴川市| 清原| 中超| 峨眉山市| 民县| 永川市| 分宜县| 廊坊市| 伊金霍洛旗| 台江县| 和政县| 江门市| 峨眉山市| 新乐市| 若尔盖县| 苍南县| 横山县| 龙海市| 安康市| 藁城市| 城口县| 峨边| 中西区| 中牟县| 泽普县| 松溪县| 施甸县| 新绛县| 尤溪县| 马尔康县| 甘孜县| 沙雅县| 新巴尔虎左旗| 工布江达县| 如皋市| 洪湖市| 怀集县| 琼海市|