我正在实现一个TreeSet,它将按照人的年龄进行排序,但如果人的名字是平等的,那么一个人将不会被保存在集合中。我实现了equals和hashcode,但是这个集合将保存所有人,即使他们有相同的名字。我不知道为什么。
public class Person implements Comparable{
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()
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 set = new TreeSet();
set.add(new Person("Jack",30));
set.add(new Person("Jack",20));
System.out.println(set);
}
}