나는 사람의 나이별로 정렬되는 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
+1 실용적인 답변 :) – powerMicha