【发布时间】:2014-10-28 09:26:09
【问题描述】:
如果一个键在哈希表中发生冲突,我想通过递归地对键加盐来找到另一个位置,直到找到一个空闲位置(总是使用相同的盐)。
例如:
- “bee”和“ant”哈希为 7
- 我在表格中插入“bee”。
- 然后当我插入“ant”时,它发生碰撞,我用“!23”加盐“ant”(导致“!23ant”)并再次调用插入(我存储了原始密钥,但使用加盐的密钥得到索引)。
我用这种方法搜索了哈希表,但没有找到任何资料。
这种碰撞处理方法的缺点是什么?
【问题讨论】:
-
您是否使用固定盐来解决冲突?还是每次都选新盐?
-
固定盐。在我的例子中,总是字符串 "!23"
-
遇到二次碰撞怎么办? (顺便说一句,您所描述的技术与许多其他散列策略有关,但我想确保在进入它们之前了解您的系统。)
-
我递归地加盐键:
ant => !23ant => !23!23ant => …(我假设一个散列函数会为键的微小变化产生非常不同的散列)
标签: string hash hashmap hashtable salt