2

调用getScalaHashMap类的方法时,使用哪个方法检查key是否存在(即map中的key是否与提供的key等价)?是它==还是另一个?

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

“可选地返回与键关联的值”

4

2 回答 2

4

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

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

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

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

于 2012-05-29T19:50:17.967 回答
0

def contains(key: A): Boolean

测试此映射是否包含键的绑定。

和:

def get(key: A): Option[B]

可选择返回与键关联的值。

可选地意味着:要么返回与包装在其中的给定键关联的值,要么返回该键的SomeNone不存在。

于 2012-05-29T19:42:22.417 回答