关闭

为什么要覆盖Java中的equals和hashcode

131人阅读 评论(0) 收藏 举报

  众所周知,覆盖equals方法必须覆盖hashcode方法。那么,为什么要覆盖equalshashcode方法呢?


     1.equals

    list列表的list.contains()方法中,判断是否包含用的是equals方法。所以,针对自定义对象应该重写equals。

    

2.hashcode

     在hashMap的containsKey()方法中,判断是否包含键(加入键是自定义对象)时,索引数组(hashmap由数组和链表组成--不懂的请自补)用到了对象的hashcode。所以,针对自定义对象也应该重写hashcode。

 

   综上:

       如果两个对象相等(使用equals()方法),那么必须拥有相同的哈希码(使用hashCode()方法)。
        即使两个对象有相同的哈希值(hash code),他们不一定相等.意思就是: 多个不同的对象,可以返回同一个hash值。


参考: http://book.51cto.com/art/201202/317533.htm

http://blog.csdn.net/renfufei/article/details/14163329


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1068次
    • 积分:61
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类