boolean add(Object o)
는 저장할 객체의 equals()
와 hashCode()
를 호출equals()
와 hashCode()
가 오버라이딩 되어 있어야 중복을 확인할 수 있다.class Person {
String name;
int age;
Person (String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name + ":" + age;
}
}
public booelan equals(Object obj) {
if(!(obj instanceof Person)) return false;
Person tmp = (Person)obj;
return name.equals(tmp.name) && age == tmp.age;
|
public int hasCode() {
return (name+age).hashCode(); // String+int = String
// 새로운 방법
// return Objects.hash(name,age);
}
이클립스 기능 중에 Source -> Generate hashCode() and equals()...을 선택하면 자동으로 오버라이딩을 해준다.
다만 위의 예제 코드 처럼 코드 변경이 필요하다.