Scala中的容器等式

Scala中的容器等式,scala,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 从可变到不变似乎是可行的: scala.collection.mutable.MutableList(1,2,3)==List(1,2,3) 不管怎样,我能对此做出什么样的假

基本问题,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
从可变到不变似乎是可行的:

scala.collection.mutable.MutableList(1,2,3)==List(1,2,3)
不管怎样,我能对此做出什么样的假设?这是一种测试内容平等性的安全方法,还是需要避免一些警告?虽然这看起来很直观,但我想知道,通过这些简单的例子,是否存在一些问题。如果您有一个列表列表,Scala会进行深度比较扫描吗


谢谢

事后看来,我应该在谷歌搜索“集合平等scala”这个词,因为我在发布(在搜索中)之前不知怎么错过了这个答案——但这是我今天发现的,所以我将结束这篇文章

集合库具有统一的相等和散列方法。其思想是,首先,将集合划分为集合、映射和序列。不同类别的集合总是不相等的。例如,集合(1,2,3)不等于列表(1,2,3)。。。。。。

简短回答:不要相信Scala中的数组——它们通常是Java最重要的东西。如果您希望在数组上实现预期效果,请使用
xs sameElements ys
,这将强制隐式转换为。很高兴知道这一点,谢谢,我前几天确实在想如何实现这一点。