我最近学习了一些哈希值的知识,也听说了哈希碰撞的问题。
因此,我想知道:如何处理这些问题?
例如,Swift的Dictionary
使用其键的哈希值。我猜它通过哈希查找其值。那么,如果具有相同哈希的不同键,Swift的Dictionary
将如何存储值?
我最近学习了一些哈希值的知识,也听说了哈希碰撞的问题。
因此,我想知道:如何处理这些问题?
例如,Swift的Dictionary
使用其键的哈希值。我猜它通过哈希查找其值。那么,如果具有相同哈希的不同键,Swift的Dictionary
将如何存储值?
NSDictionary
,并确定它使用线性探测,这是开放寻址技术的最简单变化。有两种基本技术:
或者两者都使用。
Swift字典使用开放寻址和线性探测。
这里有一个链接到实际源文件文档,详细解释了所有内容: https://github.com/apple/swift/blob/master/stdlib/public/core/HashedCollections.swift.gyb