본문 바로가기
꼬리질문

[Java] HashMap

by sangyunpark99 2025. 1. 27.
기술 면접을 대비해
HashMap과 관련된 질문과 답을
꼬리 질문 형태로 작성한 글입니다.

 

 

Q. HashMap에서 hashCode 메소드는 왜 중요한지, 그리고 hashCode 메소드를 재정의해야 하는 이유에 대해 설명해보세요.

 

A : HashMap에서 값을 삭제하거나 찾을때 hashCode메소드를 통해 얻는 값을 기준으로 일치하는지 일치하지 않는지 찾게 됩니다.

특히 객체를 값으로 가지는 경우 hashCode는 주소값을 갖고 있기 때문에, 객체의 필드가 모두 같은 값이라도 다른 객체로 인식하게 됩니다. hashCode 메서드를 재정의 해줌으로써 기존에 주소값을 비교하던 부분을 주소값이 아닌 다른 기준을 재정의함으로 인해 같은 객체로 인식이 되지 않는 문제를 해결할 수 있습니다.

 

피드백

답변에 대한 평가: 70점
평가 이유: 답변에서는 hashCode 메소드의 개념과 역할에 대해 어느 정도 이해하고 있습니다. 하지만, hashCode 메소드를 재정의해야 하는 이유에 대해 다소 부정확한 설명이 있습니다.
주소값을 비교하는 것이 아닌 객체의 동등성을 판단하기 위해 hashCode 메소드를 재정의해야 한다는 부분에 대해 더 정확하게 설명할 필요가 있습니다.
검색 키워드: Java HashMap equals method overrides hashCode

Q. hashCode 메소드를 재정의할 때 equals 메소드와 어떤 관계가 있는지 설명해주세요. 그리고 hashCode가 같다고 해서 equals가 반드시 true를 반환하는 것은 맞는가요?

 

A : hashCode 메서드를 재정의해줄때, 같은 기준으로 equals메서드도 재정의 해주어야 합니다. 해주지 않을 경우, 객체의 동등성에 대한 equals 메소드와 hashCode 메소드의 기준이 다르게 됩니다. 만약 같은 기준으로 hashCode와 equals를 재정의 해준다면, hashCode가 같은 경우 equals 메서드도 true를 반환합니다. 하지만, 둘다 재정의 해주지 않은 경우에는 false가 나올 수 있습니다.

 

피드백

답변에 대한 평가: 90점
평가 이유: 답변은 hashCode와 equals 메소드의 관계를 정확히 설명하고 있습니다. 두 메소드를 같은 기준으로 재정의해주어야 하는 이유에 대해 잘 이해하고 있는 것으로 보입니다.
검색 키워드: Java equals and hashCode method relationship

 

Q. hashCode를 재정의할 때, 두 객체의 hashCode가 다른 경우에도 equals가 true를 반환할 수 있는 경우에 대해 예시를 들어 설명해보세요. 또한, equals와 hashCode를 모두 재정의 할 때 주의할 점은 무엇인가요?

 

A : hashCode는 A라는 값을 기준으로 비교하도록 재정의하고, equals 메서드는 B라는 값을 기준으로 비교하도록 재정의한 상황이 있다고 가정해 봅시다. 두 객체가 A라는 값은 서로 다른 값을 갖지만, B라는 값은 서로 같은 값을 가지는 경우엔 hashCode가 다른 경우에도 equals가 true를 반환할 수 있다고 생각합니다. equals와 hashCode를 모두 재정의 할 때 주의할 점은 두 메서드 모두 재정의 하는 기준이 같아야 한다는 것 입니다.

 

답변에 대한 평가: 100점
평가 이유: 이해가 잘 되어 있고, 정확히 설명해주셨습니다. equals와 hashCode 메소드를 재정의할 때 기준이 같아야 한다는 점을 명확하게 설명해주셨습니다.
검색 키워드: Java equals and hashCode method consistency

Q.hashCode 메소드를 재정의할 때 같은 값을 기준으로 비교하도록 하고, equals 메소드를 재정의할 때 다른 값을 기준으로 비교하도록 한다면 어떤 문제가 발생할 수 있을까요? 이런 경우에 대해 어떤 해결책을 제시할 수 있나요?

HashMap, HashSet 등 해시 기반 컬렉션에서 문제가 발생합니다. hashCode()는 같지만 equals()가 다르게 동작하면, 동일한 해시 값을 가진 객체를 검색하거나 삭제할 때 의도한 결과를 얻을 수 없습니다. 예를 들어, HashSet에 객체를 추가했지만 검색 시 equals() 조건 때문에 검색되지 않을 수 있습니다. Collection에서 객체를 비교할때 equals메서드를 사용하기 때문입니다. 해결책은 equals()를 재정의할때 hashCode도 재정의하는 습관을 들이는 것입니다.

 

 

답변에 대한 평가: 100점
평가 이유: 해시 기반 컬렉션에서 hashCode와 equals 메서드의 일관성과 중요성을 잘 이해하고 설명해주셨습니다. 두 메서드의 관계와 해시 기반 컬렉션에서 발생할 수 있는 문제점 및 해결책에 대해 명확하게 서술하였습니다.
검색 키워드: Java HashMap HashSet equals hashCode consistency

'꼬리질문' 카테고리의 다른 글

[Java] Thread  (0) 2025.01.27
[Java] Generic  (0) 2025.01.27
[Java] ArrayList  (0) 2025.01.27