调用get
ScalaHashMap
类的方法时,使用哪个方法检查key是否存在(即map中的key是否与提供的key等价)?是它==
还是另一个?
Scala API 并没有明确地谈论它:
“可选地返回与键关联的值”
调用get
ScalaHashMap
类的方法时,使用哪个方法检查key是否存在(即map中的key是否与提供的key等价)?是它==
还是另一个?
Scala API 并没有明确地谈论它:
“可选地返回与键关联的值”
哈希映射首先检查哈希值,然后检查身份。所以“方法”是
key.hashCode == entry.hashCode && key == entry
(key
您正在测试的项目在哪里,并且entry
是地图中已经存在的项目)。特别是,scala.collection.immutable.HashMap
在其方法中使用这种形式get
(从 Scala 版本 2.9 开始)。
如果你想改变 identity 的行为,你需要重写hashCode
and of equals
,而且你不能依赖已经在 map 中的 item 的重写行为;它是你测试的那个,它的 equal 方法被调用。(但请注意,一般来说,不保证将调用谁的 equals 方法,因此您不应依赖此行为。)
def contains(key: A): Boolean
测试此映射是否包含键的绑定。
和:
def get(key: A): Option[B]
可选择返回与键关联的值。
可选地意味着:要么返回与包装在其中的给定键关联的值,要么返回该键的Some
值None
不存在。