Java equals()和hashCode()应该返回相同的结果吗?

Java equals()和hashCode()应该返回相同的结果吗?,java,equals,hashcode,Java,Equals,Hashcode,同样的结果,我的意思是,如果两个元素相等(),我有义务让它们也有相同的hashCode()吗? 如果我不这样做,会出什么问题 我想到的第一件事是两个元素在ArrayList中可以“相等”,但在HashSet中不能。允许这种行为是不好的做法吗?除了在它们中使用contains()之外,还有什么问题 如果根据equals(Object)方法,两个对象相等,则 对两个对象中的每一个调用hashCode方法都必须产生 相同的整数结果 会出什么问题?因为散列码比较比完全对象比较快,所以通常只有当散列码相

同样的结果,我的意思是,如果两个元素相等(),我有义务让它们也有相同的hashCode()吗? 如果我不这样做,会出什么问题

我想到的第一件事是两个元素在ArrayList中可以“相等”,但在HashSet中不能。允许这种行为是不好的做法吗?除了在它们中使用contains()之外,还有什么问题

如果根据equals(Object)方法,两个对象相等,则 对两个对象中的每一个调用hashCode方法都必须产生 相同的整数结果


会出什么问题?因为散列码比较比完全对象比较快,所以通常只有当散列码相等时,才会进行完全比较。因此,如果hashCode函数被破坏,等式也将被破坏。

这是否回答了您的问题?或者是的,谢谢。真不敢相信当我问这个问题的时候,它居然没有弹出。我能建议一个更近更精确的吗?我的意思是。。。在这方面,Java1.0和今天之间并没有任何变化,但这是肯定的。