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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HashSet/HashMap 存取值的过程

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HashSet/HashMap 存取值的过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HashSet與HashMap的關系:

(1)HashSet底層用的是HashMap來實現的

(2)這個HashMap的key就是放進HashSet中的對象,value就是一個Object類型的對象

(3)當調用HashSet的方法時,實際上是向HashMap中增加了一個鍵值對,key就是set增加的那個對象,value是一個Object類型的對象

HashMap數據格式解析

(1)HashMap底層采用數組維護,數組的類型的Entry類型,Entry對象有2個成員變量——key和value,對應的就是map的key和value

(2 )Entry對象還有個Entry類型的成員變量next,是用于2個對象的hashcode值一樣時,把一個對象的引用掛在這個對象的成員變量上的

HashMap存值過程(put方法)

(1)當往一個HashMap增加一個鍵值對時,會先調用鍵這個對象的hashcode方法,來得到一個hashcode值,然后根據這個值來計算出這個鍵值對所在的數組下標

(2)判斷該下標數組存的引用是否為null,如果是,直接把對象存到數組里,存儲結束;如果不是,轉(3)

(3)判斷已存在對象的key的equals方法,跟需要添加的對象的key對比,是否為true,如果是,覆蓋這個key所對應的value,存儲結束;如果不是,獲取到已存在對象的next成員變量的引用,轉(4)

(4)判斷這個next所指向的值是不是為空,如果不為空,重復(3)的過程;如果為空,則把next引用指向要增加的對象

HashMap取值過程(get方法)

(1)調用key的hashcode方法,根據返回值定位到map里數組對應的下標

(2)判斷這個數組下標是不是指向了null,如果是,返回null;如果不是,轉(3)

(3)判斷這個引用對應對象的key值的equals方法,跟查詢的key值對比,判斷是否為true,如果是,返回這個對象的value值;如果不是,轉(4)

(4)判斷這個引用對應對象的next指的是不是null,如果是null,返回null;如果不是,取出這個next對象,重復(3)

轉載于:https://www.cnblogs.com/billmiao/p/9872190.html

總結

以上是生活随笔為你收集整理的HashSet/HashMap 存取值的过程的全部內容,希望文章能夠幫你解決所遇到的問題。

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