徹底來理解下hashmap吧

2022-03-23 08:17:14 字數 734 閱讀 5290

1.什麼叫hashmap?

答:首先是一種map集合,其次呢,它是一種利用hash表來儲存的資料結構。所以叫hashmap.

2.hashmap的特點是什麼?

答:hashmap的特點是key值不能重複,否則根據key,可以讀取到多個對應的value了啊。

3.那麼怎麼保證map的key不能重複呢?

答:很簡單,利用hashcode值是每個物件的一種狀態這個屬性來區分每個乙個物件就行了嘛。

hashcode值是每個物件的一種狀態值。

利用hash演算法來計算得出的一種碼值,hash演算法要傳入引數,這個傳入的不同引數,決定了hashcode值得最終結果啊。

比如,string,integer這種封裝類,已經重寫了hashcode()這個方法,指定了利用string/integer具體的內容來進行hashcode演算法傳參。

所以string值一樣,那麼這幾個string物件的hashcode值夜一樣。

這就可以將string作為map的key啊,保證了key不重複。因為hashmap,底層實現原理是判斷傳入key的hashcode值來防止重複物件的。

4.而普通object類,預設的計算hacode值得方法hashcode()預設將物件的記憶體位址傳參,進行hashcode值計算的。每個物件的記憶體位址當然都不一樣啊,所以hasshcode也都不一樣。即使內容相同的兩個物件,由於記憶體位址不一樣,而預設的hashcode()方法是計算記憶體位址傳參的,也造成 了,依然可以放入hashmap中。

通俗理解HashMap

原理 hashmap是以key value鍵值對的形式存在著的,大致邏輯為進行put時,根據key值,進行hashing,生成hashcode,對應到bucket的位置然後在當前位置進行key value儲存。根據key值對應的每個字元的阿斯克碼的和再取模於的map長度得出的值都是固定的對應的下標值...

徹底理解sizeof

很多人認為sizeof是乙個函式,這是從它的用法看出來的,因為我們用的時候一般會寫成sizeof 確實像函式。但sizeof其實是操作符,返回乙個物件或者型別在當前平台下所佔的記憶體位元組數。首先我們來看乙個例子,注意本機使用平台為64位系統 includeint main void 輸出結果是 1...

徹底理解多型

父類引用或者介面的引用指向了自己的子類物件。animal a new cat 父類可以呼叫子類中覆寫過的 父類中有的方法 多型的好處 提高了程式的擴充套件性。繼承的父類或介面一般是類庫中的東西,如果要修改某個方法的具體實現方式 只有通過子類去覆寫要改變的某乙個方法,這樣在通過將父類的應用指向子類的例...