Object类:hashCode() 与 equals() 的关系

来源:互联网 发布:java 图片服务器搭建 编辑:程序博客网 时间:2024/04/28 14:53

Java对于eqauls方法和hashCode方法是这样规定的:

1、如果两个对象相同,那么它们的hashCode值一相同;

2、如果两个对象的hashCode相同,它们并不一定相同。

上面说的对象相同指的是用eqauls方法比较。

 

简单一点理解:

hashcode可以理解为分组,如果两个对象哈希值相等,则说明这两个对象将分在同一组;接下来比较equals,如果equals也相等,则说明这两个对象相等!

否则,均为不相等!

 

代码示例:

package sample.com;import java.util.HashSet;import java.util.Set;public class EqualsTest {public static void main(String[] args) {Set<A> set = new HashSet<A>();A a1 = new A();A a2 = new A();A a3 = new A();A a4 = new A();set.add(a1);set.add(a2);set.add(a3);set.add(a4);System.out.println(set.size()); // 1}}class A {@Overridepublic int hashCode() {// TODO Auto-generated method stubreturn 1;}@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stubreturn true;}}


 

 

0 0