이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
이 문서에서는 컬렉션을 해시하는 방법, 모범 사례, 일반적인 함정을 포함하여 Kotlin의 해싱과 관련된 몇 가지 고급 주제를 살펴봅니다.
Kotlin에서 컬렉션으로 작업할 때 일관되고 반복 가능한 결과를 생성하기 위해 컬렉션을 해시해야 하는 경우가 많습니다. 필요에 따라 몇 가지 다른 방법이 있습니다.
해시 가능해야 하는 항목 목록이 있는 경우 Any
클래스에 정의된 hashCode()
함수를 사용할 수 있습니다. 이렇게 하면 컬렉션을 포함한 모든 개체에 대해 32비트 정수 해시 코드가 생성됩니다.
val list = listOf(1, 2, 3)
val hashCode = list.hashCode() // produces -1292745640
Java의 Object.hashCode()
메서드와 호환되는 해시 코드를 생성해야 하는 경우 Kotlin 표준 라이브러리에 정의된 contentHashCode()
함수를 사용할 수 있습니다.
val list = listOf(1, 2, 3)
val hashCode = list.contentHashCode() // produces 3
이 함수는 Java의 Objects.hashCode(Object...)
메서드와 동일하며 Java의 hashCode()
메서드와 호환되는 해시 코드를 생성합니다.
Kotlin 표준 라이브러리에 정의된 hash()
함수와 호환되는 해시 코드를 생성해야 하는 경우 contentDeepHashCode()
함수를 사용할 수 있습니다.
val list = listOf(1, 2, 3)
val hashCode = list.contentDeepHashCode() // produces -1548664399
이 함수는 Kotlin의 hash(vararg objects: Any?)
함수와 동일하며 Kotlin의 hashCode()
함수와 호환되는 해시 코드를 생성합니다.
해시로 작업할 때 염두에 두어야 할 몇 가지 모범 사례가 있습니다.
해시로 작업할 때 피해야 할 몇 가지 일반적인 함정이 있습니다.