本文已使用 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()
函数兼容的哈希码。
使用哈希时,需要牢记一些最佳实践:
使用哈希时,需要避免一些常见的陷阱: