HashMap과 HashSet
data 클래스를 만들면 객체를 HashMap이나 HashSet에 넣을 때 키로 사용할 수 있는 해시 함수를 자동으로 생성해준다.
DataClasses/HashCode.kt
package dataclasses
import atomictest.eq
data class Key(val name: String, val id: Int)
fun main() {
val korvo: Key = Key("Korvo", 19)
korvo.hashCode() eq -2041757108
val map = HashMap<Key, String>()
map[korvo] = "Alien"
map[korvo] eq "Alien"
val set = HashSet<Key>()
set.add(korvo)
set.contains(korvo) eq true
}
HashMap이나 HashSet에서는 HashCode()를 equals()와 함께 사용해 Key를 빠르게 검색한다. 올바른 HashCode()를 직접 작성하는 건 까다롭고 실수하기도 쉬운데, 이런 일을 data 클래스가 대신 해주면 꽤 편리하다. ‘아톰 82, 연산자 오버로딩’에서 equals()와 HashCode()를 자세히 다룰 것이다.