본문 바로가기
프로그래밍 놀이터/Kotlin, Coroutine

[Effective Kotlin] Item 41 : Respect the contract of hashCode

by 돼지왕 왕돼지 2022. 5. 27.
반응형

이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.

 

Hash table

 

 

Problem with mutability

#
Mutable object 는 hash 등과 같은 data structure 에 사용되면 안 된다.
또는 collection 에 들어가는 순간부터 data 를 변경하면 안 된다.

 

 

The contract of hashCode

#

  1. Consistency : 동일 object 에 여러번 호출되어도 동일한 값을 제공해야 한다.
  2. 2개의 object 의 equals 값이 true 라면, hashCode 값도 동일해야 한다.
  3. 필수는 아니지만 hashCode 값은 잘 spread 되어야 한다.

 

 

Implementing hashCode

#
특별한 이유가 없다면 data class 가 제공하는 hashCode 를 사용하자.

 

#
일반적으로 hashCode 는 다음과 같은 패턴으로 만든다.

override fun hashCode(): Int{
	var hashCode = property1.hashCode()
	hashCode = result * 31 + property2.hashCode()
	return hashCode
}

 

#
Objects.hash(var1, var2) 함수도 있다.

 

끝.

 

 

반응형

댓글