标准库在实践中如何实现哈希表?

时间:2013-09-26 14:55:06

标签: java c++ python hash language-agnostic

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

  • 密钥的哪些功能用于给出放置数据的位置(即使用的散列函数是什么)?
  • 他们使用哪种算法来解决冲突?例如,他们中的任何人都使用simple chaining
  • 是否有使用随机性来选择哈希函数?

1 个答案:

答案 0 :(得分:2)

对于Java,

  

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

它们由类本身用int hashCode()

实现
  

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

通常简单的链接。 Java 8将支持树的冲突。

  

是否使用随机性来选择哈希函数?

不,除了String元素/键以避免DOS攻击。