我如何理解这句话“具有相同哈希值的两个实例不一定相等。”
Posted
技术标签:
【中文标题】我如何理解这句话“具有相同哈希值的两个实例不一定相等。”【英文标题】:How can I comprehend this sentence "two instances with the same hash value don’t necessarily compare equally. " 【发布时间】:2019-03-25 08:52:20 【问题描述】:当我阅读《Advanced Swift》一书和“Hashable Requirement”一章时,我被这个解释弄糊涂了
两个相等的实例(由您的 == 实现定义)必须具有相同的哈希值。反之则不然:具有相同哈希值的两个实例不一定比较相等。
我如何理解“相反”的情况,或者为什么具有相同哈希值的两个实例不一定相等。
【问题讨论】:
示例:有无限多的字符串,但只有 2^64 个可能的哈希值 ... 【参考方案1】:将哈希值视为给定对象实例的快速、紧凑、非唯一标识符。唯一的硬条件是:如果两个对象比较相等,根据==
运算符,两个实例必须具有完全相同的哈希值。这就是它的全部;)
特别是,考虑到哈希值不是唯一的——如何给它们Int
有限的范围? — 我们不能安全地假设具有相同哈希值的两个实例将进行相等的比较。
【讨论】:
以上是关于我如何理解这句话“具有相同哈希值的两个实例不一定相等。”的主要内容,如果未能解决你的问题,请参考以下文章