java更多关于equals和hashCode的信息
我理解equals
和hashCode
方法之间的合同。如果equals
被重写,那么hashCode
也应该被重写。我是否可以重写hashCode
方法以始终返回相同的值,比如int 23?我是否可以重写hashCode
方法,在每次调用时返回一个随机数
你可以在下面搜索框中键入要查询的问题!
我理解equals
和hashCode
方法之间的合同。如果equals
被重写,那么hashCode
也应该被重写。我是否可以重写hashCode
方法以始终返回相同的值,比如int 23?我是否可以重写hashCode
方法,在每次调用时返回一个随机数
# 1 楼答案
您不应该重写
hashCode
以返回随机值。对于同一实例,它应该始终返回相同的值这一点在Javadoc中明确说明:
您不应该返回常量值,因为在
HashMap
和HashSet
等类中使用时,它会产生非常糟糕的hashCode
Javadoc中也提到了这一点: