equals()와 hashCode()는 왜 항상 함께 재정의해야 하는가?
·
언어/Java
이상한 컬렉션의 동작, 원인은 무엇인가?HashSet에 동일한 객체를 두 번 넣었음에도 중복이 제거되지 않는 경우가 있다.또는 HashMap에 put한 객체를 get으로 조회했을 때 null이 반환되는 경우도 발생한다.이러한 현상은 자바 컬렉션의 내부 동작 원리를 정확히 이해하지 못한 채 equals()와 hashCode()를 잘못 사용했을 때 발생한다.실제로 많은 개발자들이 equals()는 override하면서 hashCode()는 그대로 두는 실수를 반복한다.equals()는 동등성, hashCode()는 해시 버킷 결정자바에서 객체를 비교할 때는 두 가지 기준이 있다.비교 방식설명==객체의 메모리 주소(동일성, identity) 비교equals()객체의 내용(논리적 동등성, equality) 비교..