반응형
이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.
Hash table
Problem with mutability
#
Mutable object 는 hash 등과 같은 data structure 에 사용되면 안 된다.
또는 collection 에 들어가는 순간부터 data 를 변경하면 안 된다.
The contract of hashCode
#
- Consistency : 동일 object 에 여러번 호출되어도 동일한 값을 제공해야 한다.
- 2개의 object 의 equals 값이 true 라면, hashCode 값도 동일해야 한다.
- 필수는 아니지만 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) 함수도 있다.
끝.
반응형
댓글