-hash
当一个可变对象存储在一个集合中时,它的文档说不能改变,类似地-isEqual:
说,-hash
对于相同的对象,值的文档必须相同.
鉴于此,是否有人对最佳实施方式有任何建议-hash
,使其满足这两个条件但实际上是智能计算的(即不仅仅是返回0
)?有谁知道框架提供的类的可变版本如何做到这一点?
最简单的事情当然是忘记第一个条件(关于它不会改变),并确保我不会在一个集合中偶然改变一个对象,但我想知道是否有任何更灵活的解决方案.
编辑:我想知道在我改变对象的内部状态时是否可以维护2个契约(其中相等的对象具有相等的哈希值,并且当对象在集合中时哈希值不会改变).我倾向于说"不",除非我做了一些愚蠢的事情,总是为哈希返回0,但这就是我问这个问题的原因.