Open Hunnibs opened 2 months ago
Equals Method는 객체의 주솟값이 다르더라도 동등한 값으로 체크하기 위해 사용된다. 일반적으로 == 연산자를 통한 객체 비교 시 주소를 체크한다. Hashcode Method는 해당 객체의 주소값을 해싱을 이용해 해시코드를 만들어 반환하는 Method이다.
1. 해시 충돌에 대해서 설명해주세요. 해시 함수가 만들 수 있는 해시코드의 값은 유한하기 때문에 서로 다른 두 객체의 주솟값을 해싱했을 때 동일한 해시코드가 생성될 가능성이 있습니다. 이렇게 서로 다른 두 객체가 동일한 해시코드 값을 가지게 되는 상황을 해시충돌이라고 합니다.
hashCode는 해당 클래스에 해시 함수를 적용하여 두객체를 비교할 때 같은 객체인지를 판별하는 코드를 만드는 메소드입니다. Equals의 경우 객체가 같은 객체인지가 아닌, 개발자가 정한 기중에 따라 객체의 같음을 판별하는 메소드입니다.
서로 다른 객체에 해시 함수를 적용했을 때, 같은 값이 나오는 것을 해시충돌이라고 합니다. 이를 해결하기 위해 Chaining방식과 Open Addressing 방식이 있습니다. Chaining 방식은 해시값을 리스트 방식으로 저장하는 방법을 사용합니다. 다만 최악의 경우 성능이 O(n) 까지 발생할 수 있기 때문에 Java에서는 트리구조를 사용하여 구현하고 있습니다. Open Addressing의 경우 선형탐색, 제곱탐색, 더블 해싱의 방법을 사용합니다.
문제
Hashcode-Equals 메소드를 각각 설명하세요.
예상 꼬리 질문
들어가야 할 키워드 정리