HashMap本質是哈希表,通過k-v存儲數據,映射關系通過哈希函數構造。
哈希函數的實現方式
1.直接定址法:取關鍵字的線性函數值作為哈希地址。
2.數組分析法:取關鍵字中的若干位作為哈希地址。
3.平方取中法:取關鍵字平方后的中間幾位作為哈希地址。
4.折疊法:將關鍵字分割成位數相同的幾部分,然后這幾部分疊加作為哈希地址。
5.除留余數法(常見)
6.隨機函數法
能夠解決哈希沖突的方法
哈希沖突:若干個key對應相同的哈希地址。
解決方法:
1.開放地址法
2.鏈地址法:將所有哈希地址沖突的記錄存儲在同一個線性鏈表中。
3.公共溢出區法:將所有哈希地址沖突的記錄都填入到溢出表中。
4.再哈希法
HashMap的遍歷
Map map = new HashMap();
Iterator iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Entry entry = (Entry)iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
}