gpt4 book ai didi

scala - 使用 Scala 的 HashMap 时如何定义键等效?

转载 作者:行者123 更新时间:2023-12-04 18:20:25 26 4
gpt4 key购买 nike

调用 get 时Scala的HashMap的方法类,使用哪种方法来检查键是否存在(即映射中的键是否与提供的键等效)?是==还是另一个?

Scala API 并没有明确地谈论它:

"Optionally returns the value associated with a key"

最佳答案

哈希映射首先检查哈希值,然后检查身份。所以“方法”是

key.hashCode == entry.hashCode && key == entry

(其中 key 是您正在测试的项目, entry 是 map 中已经存在的项目)。特别是, scala.collection.immutable.HashMap在它的 get 中正好使用这种形式方法(从 Scala 版本 2.9 开始)。

如果你想改变身份的行为,你需要重写 hashCodeequals ,并且您不能依赖 map 中已经存在的项目的覆盖行为;它是你测试的那个,它的 equal 方法被调用。 (但请注意,一般来说,不保证将调用谁的 equals 方法,因此您不应依赖此行为。)

关于scala - 使用 Scala 的 HashMap 时如何定义键等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com