当调用get
Scala的方法HashMap
类,使用哪种方法来检查注册表项存在(即地图中的一个关键是相当于提供一个)? 难道==
还是别的?
斯卡拉API没有讲清楚这件事:
“任选返回与键相关联的值”
当调用get
Scala的方法HashMap
类,使用哪种方法来检查注册表项存在(即地图中的一个关键是相当于提供一个)? 难道==
还是别的?
斯卡拉API没有讲清楚这件事:
“任选返回与键相关联的值”
哈希映射先检查散列值,然后检查身份。 因此,“办法”是
key.hashCode == entry.hashCode && key == entry
(这里key
是,你要测试和项目entry
是在地图上已经是一个项目)。 特别是, scala.collection.immutable.HashMap
使用的正是这种形式其内部get
方法(如Scala中版本2.9)。
如果你想改变身份的行为,因此,你需要重写hashCode
和equals
,也不能依靠已经在地图的项目覆盖的行为; 这是你与他们平等的方法被调用测试之一。 (但请注意,在一般情况下,不能保证是由约等于其方法将被调用,所以你不应该依赖这种行为。)
def contains(key: A): Boolean
测试此地图是否包含了一键绑定。
和:
def get(key: A): Option[B]
可选择返回与键关联的值。
任选地是指:要么返回与包裹在一个给定键相关联的值Some
或None
如果这样的键的值不存在。