NSMutableDictionary 不同对象的哈希值(hashCode)是相同的

发布于 2024-10-18 14:39:38 字数 156 浏览 6 评论 0原文

这是两个不同字典的示例,但它们返回相同的哈希码。为什么?

https://gist.github.com/837861

(它们不是同一个对象)

Here's an example of two different dictionaries, yet they return the same hash code. Why?

https://gist.github.com/837861

(They aren't the same object)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我一向站在原地 2024-10-25 14:39:38

不保证不同对象的哈希值是不同的。事实上,哈希冲突是会发生的。唯一的两个属性 -hash 方法应该保证(均取自文档):

  • 如果两个对象相等(由isEqual: 方法),它们必须具有相同的哈希值。

  • 如果将可变对象添加到使用哈希值确定对象在集合中的位置的集合中,则当对象位于集合中时,对象的哈希方法返回的值不得更改。

Hashes aren't guaranteed to be distinct for distinct objects. In fact, hash collisions will happen. The only two properties the -hash method is supposed to guarantee are (both taken from the documentation):

  • If two objects are equal (as determined by the isEqual: method), they must have the same hash value.

  • If a mutable object is added to a collection that uses hash values to determine the object’s position in the collection, the value returned by the hash method of the object must not change while the object is in the collection.

蓝戈者 2024-10-25 14:39:38

如果您查看此处,您可以看到字典上的哈希实现只是返回计数,这可能是您获得相同代码的原因:

https://stackoverflow.com/a/11984624/59198

If you look here, you can see that the hash implementation on dictionaries simply returns the count and is likely the reason why you're getting the same code:

https://stackoverflow.com/a/11984624/59198

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文