假设我们在Scala中有三组字符串.一个有元素A,B,C.两个具有元素B,C,D.三个有元素J,K,I.
我的第一个问题是,是否有任何方法可以使这两组中的任何两个的哈希码相同?我的第二个问题是,如果我将D添加到One和A到Two以获得新的Set One.n和Two.n,则One.n和Two.n的哈希码是相同的吗?
问题1)总的来说是的,完全有可能.哈希码的长度有限.套装可以是任何尺寸.因此,哈希码不能是唯一的(尽管通常它们是唯一的).
问题2)为什么不试试呢?
scala> val One = collection.mutable.Set[String]("A", "B", "C")
One: scala.collection.mutable.Set[String] = Set(A, B, C)
scala> One.hashCode
res3: Int = 1491157345
scala> val Two = collection.mutable.Set[String]("B", "C", "D")
Two: scala.collection.mutable.Set[String] = Set(B, D, C)
scala> Two.hashCode
res4: Int = -967442916
scala> One += "D"
res5: One.type = Set(A, B, D, C)
scala> Two += "A"
res6: Two.type = Set(B, D, A, C)
scala> One.hashCode
res7: Int = -232075924
scala> Two.hashCode
res8: Int = -232075924
Run Code Online (Sandbox Code Playgroud)
所以,是的,正如您所预料的那样,因为您希望==这两个实例的方法都是正确的.
| 归档时间: |
|
| 查看次数: |
1564 次 |
| 最近记录: |