您的位置:首页 > 编程语言 > Java开发

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

2015-11-18 16:42 363 查看
众所周知,覆盖equals方法必须覆盖hashcode方法。那么,为什么要覆盖equals和hashcode方法呢?

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

/article/2584879.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: