Java 資料結構 HashMap

2021-07-10 17:18:30 字數 913 閱讀 7198

hashmap

特點:1.map:無序不可重複

2.hash:通過map的key的hashcode的一次hash來決定儲存位置,通過key的==與equals方法來確定是否重複

原始碼分析:

public v put(k key, v value) 

} // 如果 i 索引處的 entry 為 null,表明此處還沒有 entry

modcount++;

// 將 key、value 新增到 i 索引處

addentry(hash, key, value, i);

return null;

}

分析通過原始碼分析主要考慮到的是key的hashcode與equals方法,因此當使用自定義類作為key的時候,需要重寫方法,下面以user為例

public class user 

public void setid(string id)

public string getname()

public void setname(string name)

@override

public string tostring()

@override

public int hashcode()

@override

public boolean equals(object obj) else if (!id.equals(other.id))

return false;

if (name == null) else if (!name.equals(other.name))

return false;

return true;

}}

Java資料結構 HashMap 原始碼閱讀

hashmap就是資料結構中的雜湊表,是以key,value的形式進行儲存資料的,陣列具有查詢定位快,但是插入操作效能差,鍊錶具有查詢慢插入快速的特點,而hashmap可以說是這兩種方式的一種折中。hashmap採用陣列與煉表相結合的方式實現,如下圖所示 hashmap會根據儲存實體key的值確定存...

資料結構 手寫hashmap

define size 100 位址鏈個數,足夠大 class simhash public simhash simhash delete map 清除陣列 void insert int key,int value node p map hash key 確定位址鏈索引 node q new no...

hashMap的資料結構

在jdk8中,hashmap是用了陣列和鍊錶以及紅黑樹這三種資料結構 首先,在hashmap類中,都有乙個table陣列,我們在儲存資料時,對這個資料的hash值進行一系列的計算 計算出它在table中的位置 下標 並將它存放進去 然而,我們在hashmap是什麼 中提到,不同的物件的hash值可能...