HashMap簡析之 HashCode衝突的解決

2021-08-30 12:45:37 字數 990 閱讀 5626

總述:通過一定的演算法,將key的hashcode轉換成陣列的index;將key,value,hash等資訊儲存在陣列對應的index位置上.

問題:1.某些key的hashcode相同

2.hashcode不同,但一定演算法後對映到陣列的index相同

這個就是常說的hashcode衝突問題.

1.hashmap涉及的資料結構

entry ;

//entry陣列:儲存hashmap元素的地方.

//entry

//1.封裝了key;value;

//2.本身是乙個單向鍊錶;包含hash值;next;指標;

static class entryimplements map.entry

....

}

2.儲存的過程:

通過hashcode得到index後.儲存的不僅僅是該元素的key,value,hash.還有指向下乙個entry的引用.如果出現了hashcode衝突問題.則新建乙個entry;將該entry的nex指標指向已存在的entry.

public v put(k key, v value) 

}modcount++;

addentry(hash, k, value, i); //該位置還空;或者位置不空,但已有entry(hashcode衝突)

return null;

}

void addentry(int hash, k key, v value, int bucketindex)

3.取值的過程

還是hash-index-entry的過程.不是直接return該index上entry;而要檢查entry鏈上真正對應的那個

public v get(object key) 

}

算個複習吧.沒看過的看看.筆試面試很常見.

HashMap原始碼簡析

hashmap 基於map介面實現的,允許使用null值和null鍵,但資料無序的.劃重點 執行緒不安全.若是想獲取乙個執行緒安全的hashmap,可用下面方法 map map collections.synchronizedmap new hashmap hashmap的主幹是entry陣列,每乙...

Python之函式簡析 二

python之函式 本節重點理解一下map,reduce,filter,lambda,sorted函式的用法 map函式例項 usr bin env python coding utf8 time 2017 11 2 9 32 author hantong file func.py map函式,返回...

strtok函式簡析

官方的strtok函式,用來通過分隔字元 不支援字串,傳入的串中每個字元單獨當分隔符,如下例子組合的如123會處理1而23會被跳過 返回分隔的串的首位址 比如呼叫strtok abc123def 123456 返回值是指向abc的指標 下次要獲得 def 需要呼叫strtok null,123456...