您的位置:首页 > 其它

集合Set判断对象是否相等的equals和hashCode

2013-03-19 20:52 471 查看
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

public class Test {

public static void main(String[] args) {
Set set = new HashSet();

set.add(new String("abc"));
set.add(new Date());
set.add(new Integer(20));
set.add(null);

//添加自定义类型的对象,
Person p = new Person("10", "张三");
set.add(p);

//如果要表示重复,必须重写hashCode和equals方法
Person p2 = new Person("10", "张三");
set.add(p2);

System.out.println("p和p2相等吗?"+p.equals(p2));//true
}

}

class Person{

private String id;
private String name;

public Person(String id, String name) {
super();
this.id = id;
this.name = name;
}

@Override
public boolean equals(Object obj) {
if(this == obj){  		         //是不是对象?
return true;
}
if(obj instanceof Person){       //是人这个对象吗?
Person person = (Person)obj; //传入的对象还原人类
if(this.id == person.id && this.name.equals(person.name)){
return true;            //判断是否号码,名字,相等?对,回true;
}
}

return false;
}

@Override
public int hashCode() {
return id.hashCode();   //id是String类型的,回int类型调hashCode().
}							//如果那个数是整型的,直接回那个值

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