0

一些编程语言,如 python、Java 和 C++11,将哈希表(尽管有时使用不同的名称并具有扩展功能)作为其标准库的一部分。我想从高级算法的角度来理解已经实现了什么。具体来说:

  • 键的什么功能用于给出放置数据的位置(即使用的散列函数是什么)?
  • 他们使用哪些算法来解决冲突?例如,他们中的任何一个都使用简单的链接吗?
  • 是否使用随机性来选择散列函数?
4

1 回答 1

2

对于 Java,

哈希函数本身是如何计算的?

它们由类本身实现int hashCode()

他们使用哪些算法来解决冲突?例如,他们中的任何一个都使用简单的链接吗?

通常是简单的链接。Java 8 将支持用于字符串冲突的树。

是否使用随机性来选择散列函数?

不,除了避免 DOS 攻击的字符串元素/键。

于 2013-09-26T14:58:15.937 回答