【发布时间】:2019-01-17 02:34:34
【问题描述】:
在使用 Scala exercises on Iterables 时,我遇到了以下奇怪的行为:
val xs = Set(5,4,3,2,1)
val ys = Set(1,2,3,4,5)
xs sameElements ys // true
val xs = Set(3,2,1)
val ys = Set(1,2,3)
xs sameElements ys // false - WAT?!
这些集合肯定有相同的元素,应该忽略排序;为什么这仅适用于较大的集合?
【问题讨论】:
-
使用
==来测试是否相等,而不考虑顺序和重复。 -
这是比较
Sets 的一个好点,虽然我刚刚注意到List(1,2,3) == Vector(1,2,3)但List(1,2,3) != Set(1,2,3)和List(1,2,3) != Array(1,2,3)这是另一个潜在的雷区! -
正如 Paul Draper 在下面的 cmets 中指出的那样,
Array(1,2,3) != Array(1,2,3)!!