`
reallyafei
  • 浏览: 97262 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

equals和hashCode

    博客分类:
  • Java
 
阅读更多
正确的equals方法必须满足5个条件:
1)自反性,对任意x,x.equals(x)一定返回true。
2)对称性,对任意x和y,如果y.equals(x)返回true,则x.equals(y)也返回true。
3)传递性,对任意x、y、z,如果 有x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)一定返回true。
4)一致性,对任意x和y,如果对象中用于等价比较的信息没有改变,那么无论调用x.equals(y)多少次,返回的结果应该保持一致,要么一直是true,要么一直是false。
5)对任何不是null的x,x.equals(null)一定返回false。
默认的Object.equals()只是比较对象的地址。

设计hasCode时最重要的因素就是:无论何时,对同一个对象调用hasCode()都应该生成同样的值。
对于equals()相同的两个对象,hashCode()一定相同;
对于hashCode()相同的两个对象,equals()不一定相同。

对于String而言,hashCode()是基于String的内容的。即内容相同的两个String,它们的hashCode()必定是相同的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics