Java

Java / 컬렉션 프레임워크 - HashSet

Dear-J 2025. 3. 8. 09:48

문자열 해시 코드

컴퓨터는 문자를 직접 이해하지 못하는 대신 각 문자에 고유한 숫자를 할당해서 인식 (ASCII 코드)

hashCode() 메서드를 사용해서 문자열을 해시 코드로 변경

>> 고유한 정수 숫자 값 (해시 코드)를 사용해서 해시 인덱스를 생성하고 이걸 배열의 인덱스로 사용

 

자바의 hashCode()

해시 자료 구조를 사용하려면 정수로 된 숫자 값인 해시 코드가 필요

자바에는 정사 뿐만 아니라 char, String, Double, Boolean등 수 많은 타입 존재, 또한 개발자가 직접 정의한 Member, User와 같은 사용자 정의 타입도 존재

>> 모든 객체가 숫자 해시 코드를 제공할 수 있어야 함

 

Object.hashCode()

자바는 모든 객체가 자신만의 해시 코드를 표현할 수 있는 기능 제공

보통 오버라이딩해서 사용

기본 구현은 객체의 참조값을 기반으로 해시 코드 생성

>> 객체의 인스턴스가 다르면 해시 코드도 다름

 

equals, hashCode의 중요성

해시 자료 구조를 사용하려면 hashCode()도 중요하지만

해시 인덱스가 충돌할 경우를 대비해 equals()도 반드시 재정의

>> 데이터 중복 저장 문제