加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala元组类型是否使用其所有元素来计算其哈希码?

发布时间:2020-12-16 18:21:20 所属栏目:安全 来源:网络整理
导读:或者 Scala是否使用独立于其元素的内容(如内存地址)来计算元组哈希码? 换句话说,给定两个Tuple2(a,b)和(c,d),a == c b == d暗示(a,b).hashCode ==(c,d).hashCode? 解决方法 does a == c b == d imply (a,b).hashCode == (c,d).hashCode ? 是的,它确实.这是
或者 Scala是否使用独立于其元素的内容(如内存地址)来计算元组哈希码?

换句话说,给定两个Tuple2(a,b)和(c,d),a == c&& b == d暗示(a,b).hashCode ==(c,d).hashCode?

解决方法

does a == c && b == d imply (a,b).hashCode == (c,d).hashCode?

是的,它确实.这是==和hashCode之间的契约. (*)

Does Scala tuple type uses all of its elements to compute its hash code?

是的,它确实. Scala Tuple2只是一个案例类:

final case class Tuple2[@specialized(Int,Long,Double,Char,Boolean/*,AnyRef*/) +T1,@specialized(Int,AnyRef*/) +T2](_1: T1,_2: T2)
  extends Product2[T1,T2]
{
 ...
}

在Scala中,案例类的hashCode按以下方式计算:

hashCode in case classes in Scala

What code is generated for an equals/hashCode method of a case class?

(*)从以下可以看出,对于案例类(包括元组),合同得以实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读