我目前正在研究 Cocoa 集合,并且我的研究带来了 Mike Ash关于对象相等和散列的帖子。
这是该帖子的摘录:
由于 hash 的语义,如果你覆盖 isEqual: 那么你必须覆盖 hash。如果你不这样做,那么你就有可能拥有两个相等但没有相同哈希的对象。如果你在字典、集合或其他使用哈希表的东西中使用这些对象,那么就会引起欢闹。
不幸的是,作者没有进一步详细说明会发生什么欢闹,我的好奇心并没有让我离开它而不试图更深入地挖掘。所以问题是:如果我有两个具有不同哈希值的相等对象并将这些对象放入一个集合中,究竟会发生什么?我会遇到什么样的问题?