您的位置:首页 > 移动开发 > Objective-C

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

2014-01-10 21:54 323 查看
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 {
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 1;
}

@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return true;
}
}


 

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