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

How do standard libraries implement hash tables in practice?

本文关键字:实现 哈希表 何实现 实践中 标准      更新时间:2023-10-16

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

  • 键的什么功能用于提供放置数据的位置(即使用的哈希函数是什么)?
  • 他们使用哪些算法来解决冲突?例如,它们中的任何一个是否使用简单链接?
  • 是否有任何随机性来选择哈希函数?

对于 Java,

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

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

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

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

是否有任何随机性来选择哈希函数?

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