val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a==b // false
是否有模式匹配方式来查看两个数组(或序列)是否相同?
答案 0 :(得分:95)
您需要将最后一行更改为
a.deep == b.deep
对数组进行深度比较。
答案 1 :(得分:87)
Array(1,2,4,5).sameElements(Array(1,2,4,5))
答案 2 :(得分:18)
a.corresponds(b){_ == _}
Scaladoc:
true
如果两个序列都有 相同的长度和p(x, y)
是true
对于所有相应的元素x
this
包裹数组和y
that
, 否则false
答案 3 :(得分:5)
为获得最佳性能,您应该使用:
java.util.Arrays.equals(a, b)
这非常快,不需要额外的对象分配。 scala中的Array[T]
与java中的Object[]
相同。原始值的相同故事,如Int
,即java int
。
答案 4 :(得分:2)
从Scala 2.13开始,deep
相等方法无效,并且会出错:
val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a.deep == b.deep // error: value deep is not a member of Array[Int]
sameElements
在Scala 2.13中仍然有效:
a sameElements b // true