日期:2014-05-20  浏览次数:20786 次

HashMap为什么要采用数组和链表来实现?
Hash表也称为散列表;在计算机上要找到同一个散列值的不同输入是不可能的,那么当HashMap输入相同key值的时候,就没必要将value值存贮到链表上了,直接替换原来的value值不是更好吗?效率是不是也提高了呢?这个问题一直困扰这我,期待大牛们解答……
HashMap 链表 HASH

------解决方案--------------------
标准的链地址法处理哈希表冲突问题
还有开放地址法,LZ可以去参考下
------解决方案--------------------
数组不必多言。至于为何用链表,我想问:大哥,凭什么替换啊?!
假设你原本想
{
"KEY": "VALUE", // Hash对应的存储位置
"A": "123", // 0
"B": "456", // 1
"C": "555", // 4
"D": "666", // 3
"E": "777", // 2
"X": "XYZ" // 0
}

那么,显然,你不希望让Key="X"的Entry冲掉Key="A"的,而是希望他们和平共处吧。所以,对于hash后算出的存储位置,通过链表的方式避免错误。