【问题标题】: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 个可能的哈希值 ...

标签: swift hashable equatable


【解决方案1】:

将哈希值视为给定对象实例的快速紧凑非唯一标识符。唯一的硬条件是:如果两个对象比较相等,根据== 运算符,两个实例必须具有完全相同的哈希值。这就是它的全部;)

特别是,考虑到哈希值不是唯一的——如何给它们Int有限的范围? — 我们不能安全地假设具有相同哈希值的两个实例将进行相等的比较。

【讨论】:

    猜你喜欢
    • 2012-09-24
    • 2011-07-23
    • 2020-06-22
    • 2013-04-30
    • 1970-01-01
    • 2016-07-05
    • 2021-03-25
    • 2018-05-21
    • 2014-09-14
    相关资源
    最近更新 更多