[code="java"]
public class Stu implements Comparable {
private String name;
private String address;
private String sex;
private int age;
public Stu(String name, String address, String sex, int age) {
super();
this.name = name;
this.address = address;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int compareTo(Stu o) {
if (this.name.compareTo(o.name) > 0) {
return 1;
} else if (this.name.compareTo(o.name) < 0) {
return -1;
} else {
return 0;
}
}
public String toString() {
return new StringBuilder().append("name = ").append(this.name).append(
" address = ").append(this.address).append(" sex = ").append(
this.sex).append(" age = ").append(this.age).toString();
}
public boolean equals(Stu obj) {
return (this.name.equals(obj.name));
}
public int hashCode() {
return this.name.hashCode();
}
}
[/code]
[code="java"]
public class CollectionTest {
private static Set<Stu> set = new HashSet<Stu>();
public static void main(String[] args) {
initHashSet();
System.out.println();
printHashSet();
}
public static void initHashSet() {
Stu stu1 = new Stu("stu9", "neu1", "male", 20);
Stu stu2 = new Stu("stu2", "neu2", "female", 22);
Stu stu3 = new Stu("stu6", "neu3", "male", 23);
Stu stu4 = new Stu("stu4", "neu5", "male", 24);
Stu stu5 = new Stu("stu4", "neu4", "female", 9);
System.out.println("stu4.equals(stu5) = " + stu4.equals(stu5));
System.out.println("stu4.hash = " + stu4.hashCode()+ " ; stu5.hash = " + stu5.hashCode());
set.add(null);
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);
set.add(stu5);
}
public static void printHashSet() {
for (Stu i : set) {
System.out.println(i);
}
}
}
[/code]
输出结果为:
[quote]stu4.equals(stu5) = true
stu4.hash = 3541120 ; stu5.hash = 3541120
null
name = stu9 address = neu1 sex = male age = 20
name = stu2 address = neu2 sex = female age = 22
name = stu4 address = neu4 sex = female age = 9
name = stu4 address = neu5 sex = male age = 24
name = stu6 address = neu3 sex = male age = 23
[/quote]
请问为什么会有两个name = stu4的元素,这两个hashcode相等,equal也是true,set中应该是不应该出现两个相同元素的,请帮忙解答一下,不胜感激!