日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据结构基础】【散列表】

發布時間:2023/12/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据结构基础】【散列表】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

散列表也叫做哈希表(hash table),這種數據結構提供了鍵(key)和值(value)的映射關系。只要給出一個key,就可以高效查找它匹配的value,時間復雜度接近O(1);

哈希函數

哈希函數通過某種方式,把key和數組下標進行轉換。
在java中,每個對象都有屬于自己的hashcode,這個hashcode是區分不同對象的重要標識。無論對象自身的類型是什么,他們的hashcode都是一個整型變量。
最簡單的轉化方式是按照數組長度進行取模運算:

index = HashCode(Key)%Array.length

JDK中的哈希函數并沒有直接采取取模運算,而是利用位運算的方式來優化性能。
通過哈希函數,我們可以把字符串或其他類型的Key,轉化成數組的下標index
例如長度為8的數組

key = 001121,
index = HashCode(“001121”)%Array.length=1420036703%8=7

散列表的讀寫擴容操作

1、寫操作:在散列表中插入新的鍵值對
例如調用:

hashMap.put("002931","王五");

具體實現方式:
1、通過哈希函數,將key轉換成數組下標,例如5
2、如果數組小標5對應的位置沒有元素,就把這個鍵值對填充到數組下標為5的位置
但是,由于數組的長度是有限的,當插入的鍵值對越來越多,不同的key通過哈希函數獲得的下標可能是相同的
這種情況叫做哈希沖突
例如:

002936的對應數組下標為2,;
002947的對應數組下標也是2;

哈希沖突是無法避免的。解決哈希沖突的方法:
1、開放尋址法
例如:第6組鍵值對通過哈希函數得到下標2,該下標在數組中已經有了其他元素,那么就向后移動1位,觀察數組下標3是否有空
如果下標3也被占用,那么就再向后移動,直到找到空的位置。
(尋址的方式有很多,并不一定只是簡單地尋找當前元素的后一個元素,這里只是簡單舉例)
2、鏈表法
HashMap數組的每個元素不僅是一個鍵值對對象,還是一個鏈表的頭結點。每一個鍵值對對象通過next指針指向它的下一個鍵值對結點。當新來的鍵值對映射到與之沖突的數組位置時,只需要插入對應的鏈表中即可:
如下圖:

2、讀操作:通過給定的key,在散列表中查找對應的value
例如:調用函數hashMap.get(“002936”)
具體步驟:(以鏈表法為例)
1、通過哈希函數,將key轉換成數組下標,例如2
2、找到數組下標2對應的元素,如果這個元素的key是002936,那么就找到了
如果這個key不是002936,由于數組的每個元素都與一個鏈表對應,我們可以順著鏈表慢慢往下找,看看能否找到與key相匹配的結點

3、擴容操作:
當經過多次元素插入,散列表達到一定的飽和度時,key映射位置發生沖突的概率會逐漸提高。這樣一來,大量元素擁擠在相同的數組下標位置形成很長的鏈表,對后續的插入和查詢操作都會有很大影響。
此時就需要進行擴容:
影響擴容的因素:
1、HashMap當前長度
2、HashMap的負載因子,默認值為0.75f(在JDK中)
衡量HashMap需要進行擴容的操作如下:

HashMap.Size>=Capacity x LoadFactor

擴容具體步驟:
1、擴容,創建一個新的鍵值對空數組,長度是原數組的兩倍
2、重新Hash,遍歷原來的鍵值對數組,把所有的鍵值對重新Hash到新數組中(因為數組長度變化后,hash的規則也發生變化了)
經過擴容后,散列表重新變得稀疏。

總結

以上是生活随笔為你收集整理的【数据结构基础】【散列表】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: wwwav视频 | 中文字幕乱码一二三区 | 人人搞人人插 | 午夜亚洲天堂 | 久久在线视频 | av一级二级 | 国产精品久久久久久久久久久久久久久久久 | 免费看黄色片的网站 | 国产网站视频 | 黄色视屏网站 | 国产高清视频在线免费观看 | 黄色大片网址 | 好男人在线观看 | 亚洲色图图片 | 国产精品一区二区三区四区五区 | 人体毛片 | 亚洲色图一区二区 | 91在线视频观看 | 性三级视频 | 女厕厕露p撒尿八个少妇 | 欧美黄片一区二区三区 | 嫦娥性艳史bd | 久草中文在线 | 性色av一区二区 | 免费观看国产视频 | 一级片麻豆 | 成人免费视频a | 欧美成人激情在线 | 黄色片女人 | 中文字幕欧美激情 | 黄色片xxx| 三级视频网站 | 禁漫天堂黄漫画无遮挡观看 | 永久免费54看片 | 国产精品分类 | 波多野结衣办公室双飞 | 超碰干| 国产不卡一 | 久久黄色影院 | 国产校园春色 | 福利在线国产 | 91视频一区二区 | 中文字幕在线播放av | 午夜视频网站 | 亚洲图片一区二区 | 国产精品美女在线 | 国产无码精品合集 | 一区二区三区四区五区视频 | 999久久久国产精品 韩国精品一区二区 | 成人黄色在线 | 国产不卡一二三 | 热久久精 | 久久视频在线免费观看 | 天天躁日日躁狠狠躁av麻豆男男 | 色图一区| 嫩草影院在线免费观看 | 欧美日韩国产免费一区二区三区 | 成人有色视频 | 亚洲毛片在线 | 老司机一区二区三区 | 黄视频网站在线看 | 亚洲国产视频网站 | 国产黄色高清 | 中国黄色片子 | 色哟哟在线视频 | 正在播放欧美 | 国产裸体永久免费视频网站 | 国产精品xxx在线 | 人妻av一区二区 | 少妇特黄a一区二区三区88av | 国产性xxx| 99久久精品国产一区二区成人 | 白浆影院 | 精品国产av无码一区二区三区 | 美女脱裤子打屁股 | 欧美黑人做爰爽爽爽 | 精品久久久无码中文字幕边打电话 | 欧美激情视频网 | 欧美日韩久久久久久 | 欧美不卡一区 | 99热com | 亚洲免费av电影 | 免费黄色一级大片 | 欧美三级在线播放 | 国产一级特黄毛片 | 91精产国品一二三区在线观看 | 欧美激情久久久 | 免费天堂av| 欧美丰满熟妇xxxx | 精品中文字幕一区二区 | 91免费视频播放 | 97干在线 | 国产一区二区在线电影 | 亚洲成人精品久久 | 瑟瑟在线视频 | 国产黄色录像片 | 欧美成人免费在线观看视频 | 色婷婷av一区二区三区大白胸 | 又色又爽又黄gif动态图 |