val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a==b // false
有没有一种模式匹配的方法来查看两个数组(或序列)是否相等?
Answers:
您需要将最后一行更改为
a.deep == b.deep
对数组进行深入比较。
deep
。它创建一个集合,该集合将apply
方法的所有调用转发到原始数组。
Array.equals
?似乎没有提供深入的比较。
deepEquals
在最新版本中已弃用。
Array(1,2,4,5).sameElements(Array(1,2,4,5))
a.corresponds(b){_ == _}
Scaladoc:
true
如果两个序列都具有相同的长度,p(x, y)
并且true
用于包装数组和的所有对应元素x
, 则为否this
y
that
false
为了获得最佳性能,您应该使用:
java.util.Arrays.equals(a, b)
这非常快,不需要额外的对象分配。Array[T]
scala中的内容与Object[]
java中的相同。对于原始值(例如Int
java)也是如此int
。
val t0 = System.nanoTime(); val r = (java.util.Arrays.equals(a,b)) ; val t1 = System.nanoTime(); t1 - t0
在此示例代码和其他示例的非常相似的代码上运行...此选项比其他示例更快。
sameElements