您的位置:首页 > 其它

容器基本练习:equals与hashCode——判定对象是否相同与哈希值的关系

2016-04-12 11:09 501 查看
import java.util.*;
public class TestBasicContainer {

public static void main(String[] args) {
Collection collect = new HashSet();
collect.add("hello");
collect.add(new Integer(1000));
collect.add(new Name("william","AMG"));
collect.remove("hello");
collect.remove(new Integer(1000));
System.out.println(collect.remove(new Name("william","AMG")));
System.out.println(collect);
}

}

class Name{
private String firstName, lastName;
Name(String firstName,String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
String getFirstName(){
return firstName;
}
String getLastName(){
return lastName;
}
public String toString(){
return firstName + " " + lastName;
}

public boolean equals(Object obj){
if (obj == null){
return false;
}
if (obj instanceof Name){//这里大部分人会选择obj.(firstName和lastName).equals(name.(firstName和lastName))的方法来阐述。
Name name = (Name) obj;
if (((Name) obj).firstName == name.firstName && ((Name) obj).lastName == name.lastName){
return true;
}else{
return false;
}
}else{
return false;
}//((Name)obj).firstName中,((Name)obj).是可以不写的。

}
//override是一模一样的照抄,包括参数。所以这里我自以为是了。
 /*public boolean equals(Name parName){
if (parName == null){
return false;
}
if (parName instanceof Name){
Name name = (Name) parName;
if (((Name) parName).firstName == name.firstName && ((Name) parName).lastName == name.lastName){
return true;
}else{
return false;
}
}else{
return false;
}

}*/

public int hashCode(){
return firstName.hashCode() ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息