标准库在实践中如何实现哈希表
How do standard libraries implement hash tables in practice?
一些编程语言,如python,Java和C++11,具有哈希表(尽管有时使用具有扩展功能的不同名称)作为其标准库的一部分。我想从高级算法的角度了解已经实现的内容。具体说来:
- 键的什么功能用于提供放置数据的位置(即使用的哈希函数是什么)?
- 他们使用哪些算法来解决冲突?例如,它们中的任何一个是否使用简单链接?
- 是否有任何随机性来选择哈希函数?
对于 Java,
哈希函数本身是如何计算的?
它们由类本身实现,int hashCode()
他们使用哪些算法来解决冲突?例如,它们中的任何一个是否使用简单链接?
通常是简单的链接。 Java 8将支持字符串冲突的树。
是否有任何随机性来选择哈希函数?
否,除了字符串元素/键,以避免DOS攻击。
相关文章:
- C++哈希表中,两个相同的实现,但一个给出错误
- 使用哈希表设置实现
- 实现具有浮点键的类似哈希表的数据结构,其中公差内的值被合并在一起
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 实现将字符串映射到 C++ 中的数组的哈希表。我一直在"Debug Assertion Failed",我不知道为什么
- 如果我们使用链表数组来实现哈希表,则可以以不需要遍历的方式实现"add"。这是真的还是假的?
- 使用链哈希实现动态哈希表
- 在C++中实现哈希表(插入和延迟删除)
- 如何用tbb实现一个将键映射到不同类型值的并发哈希表
- 如何实现哈希表的擦除函数
- 标准库在实践中如何实现哈希表
- 使用链表数组实现哈希表
- 实现哈希表(rehash范围错误)
- 如何实现一个具有2个键的哈希表
- 哈希表-哈希函数的实现
- 用C++实现哈希表冲突的避免与解决
- 实现哈希表
- 在c++中实现哈希表
- 实现哈希表,插入函数导致"scope"错误
- 在c++中使用unordered_map实现哈希表并处理冲突