
DsHashable::equals 메서드를 오버라이드할 때, 필드의 값을 비교할 때는 일반적으로 다음과 같은 순서로 비교합니다.
1. 두 객체가 같은 클래스의 인스턴스인지 확인합니다. (getClass().equals(other.getClass()))
2. 두 객체의 해시코드가 같은지 확인합니다. (hashCode() == other.hashCode())
3. 만약 해시코드가 같다면, 필드의 값을 비교합니다.
이 순서를 따르면, 컬렉션에 저장될 때 해시코드가 같아지기 때문에 컬렉션에 저장이 가능합니다.
예를 들어, 다음 코드는 DsHashable::equals 메서드를 오버라이드한 클래스의 예시입니다.
#hostingforum.kr
java
public class Person implements DsHashable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (getClass() != obj.getClass()) return false;
Person other = (Person) obj;
if (hashCode() != other.hashCode()) return false;
return name.equals(other.name) && age == other.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
이 코드에서, Person 클래스는 DsHashable 인터페이스를 구현하고 있습니다. equals 메서드는 getClass()와 hashCode()를 먼저 비교한 후, 필드의 값을 비교합니다.
2025-08-10 14:26