为什么两个相等对象必须具有相同的哈希值?

Ale*_*ksa 1 cocoa equality objective-c nsobject

NSObject协议参考说"如果两个对象相等,它们必须具有相同的哈希值."

为什么必须?没有相同哈希值的两个相等对象可能会出现什么问题?

Jon*_*eet 6

那么基本上你就无法在哈希表中查找相等的值.散列码基本上用作在散列表(或散列集)中查找潜在密钥匹配的快速方法.这依赖于"对象平等意味着哈希平等"的契约.

如果你不打算在使用哈希进行快速查找的任何东西中使用你的对象,你可能会让相同的对象返回不同的哈希码 - 但如果可以的话我真的会避免它.