我正在實現一個TreeSet,它將根據人的年齡進行排序,但如果人的名字是平等的,那麼一個人不會被保存在集合中。我實現了equals和hashcode,但是這個集合將保存所有人,即使他們有相同的名字。我不知道爲什麼。如何在Java中實現TreeSet?
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) {
if(this.getAge()<o.getAge()){
return -1;
}
return this.getAge() == o.getAge()?0:1;
}
@Override
public boolean equals(Object object){
return name.equals(((Person)object).getName());
}
@Override
public int hashCode(){
return name.hashCode();
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public static void main(String[] args){
Set<Person> set = new TreeSet<Person>();
set.add(new Person("Jack",30));
set.add(new Person("Jack",20));
System.out.println(set);
}
}
非常感謝你,我知道該怎麼做。 – NOrder 2012-04-12 06:39:40
+1爲務實的回答:) – powerMicha 2012-04-12 06:45:48