Scala中的容器平等

时间:2013-09-23 23:42:26

标签: scala

基本问题,我很惊讶Scala似乎支持容器类中的元素相等。例如:

Seq(1,2,3)==List(1,2,3) //true
Vector(1,2,3) ==List(1,2,3) //true

虽然我怀疑,但阵列甚至不会对抗自己。

Array(1,2,3) == Array(1,2,3) //false

Mutable to immutable似乎有效:

scala.collection.mutable.MutableList(1,2,3)==List(1,2,3)

无论如何,我可以对此做出什么样的假设?这是测试内容平等的安全方法还是有一些需要避免的注意事项?虽然这看起来很直观,但我想知道是否可以通过这些简单的例子存在一些问题。如果您有列表列表,Scala会进行深度比较扫描吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

事后我应该在谷歌搜索“集合平等scala”这个词,因为我在发布之前(在我的搜索中)错过了这个答案 - 但这是我今天发现的所以我会把它关闭。

集合库具有统一的平等和散列方法。首先,这个想法是将集合划分为集合,映射和序列。不同类别的馆藏总是不相等。例如,Set(1,2,3)不等于List(1,2,3)...... http://docs.scala-lang.org/overviews/collections/equality.html