swift - 如何处理哈希冲突?

标签 swift dictionary hash collision

最近学习了一些hash值的知识,所以也听说了hash冲突的问题。
因此我想知道:如何处理这些问题?

例如Swift 的 Dictonary 使用散列值及其键。我假设它通过哈希查找它的值。那么 Swift 的 Dictionary 如何存储恰好具有相同散列的不同键的值?

最佳答案

从根本上说,有两种处理哈希冲突的主要方法 - 单独链接,当具有冲突哈希代码的项目存储在单独的数据结构中时,以及开放寻址,当冲突数据存储在使用某种算法选择的另一个可用存储桶中时。

这两种策略都有许多子策略,described in Wikipedia .毫不奇怪,特定实现所使用的确切策略是特定于实现的,因此作者可以随时更改它以获得更高效的东西,而不会破坏用户的假设。

在这一点上,找出 Swift 如何处理冲突的唯一方法是反汇编库(也就是说,除非你为 Apple 工作,并且可以访问源代码)。 Curious people did that to NSDictionary , 并确定它使用 linear probing ,开放寻址技术的最简单变体。

关于swift - 如何处理哈希冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28379809/

相关文章:

swift - 我如何在循环中链接 Swift 中的 promise ?

swift - UI 测试目标无法识别来自 xcworkspace 中自定义框架的 Swift 包

python - 从字典中提取部分值

Python:处理循环中不存在的字典值

C# 如何根据对象引用计算哈希码

Ruby:将嵌套的 Ruby 哈希转换为非嵌套的哈希

ruby - 如何获取哈希中键/值对的位置?

ios - 获取和设置变量有什么意义?

ios - 尝试将 json 发布到服务器时出错 Code=3840

javascript - 谷歌地图标记聚类不适用于缩小