使用Scala的HashMap的时候是如何定义的关键等价?(How is key equivalen

2019-09-17 14:38发布

当调用get Scala的方法HashMap类,使用哪种方法来检查注册表项存在(即地图中的一个关键是相当于提供一个)? 难道==还是别的?

斯卡拉API没有讲清楚这件事:

“任选返回与键相关联的值”

Answer 1:

哈希映射先检查散列值,然后检查身份。 因此,“办法”是

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

(这里key是,你要测试和项目entry是在地图上已经是一个项目)。 特别是, scala.collection.immutable.HashMap使用的正是这种形式其内部get方法(如Scala中版本2.9)。

如果你想改变身份的行为,因此,你需要重写hashCodeequals ,也不能依靠已经在地图的项目覆盖的行为; 这是你与他们平等的方法被调用测试之一。 (但请注意,在一般情况下,不能保证是由约等于其方法将被调用,所以你不应该依赖这种行为。)



Answer 2:

def contains(key: A): Boolean

测试此地图是否包含了一键绑定。

和:

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

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

任选地是指:要么返回与包裹在一个给定键相关联的值SomeNone如果这样的键的值不存在。



文章来源: How is key equivalence defined when using Scala's HashMap?
标签: scala