假设:
val l1 = List(1,2,3)
val l2 = List(2,3,1)
我想要一种方法来确认l1等于l2(因为内容相同但顺序不同)。列表/序列上是否有API方法可以做到这一点?
l1.sameElements(l2)
由于它也会验证订单,因此不起作用。
我想出了以下几点:
l1.foldLeft(l1.size == l2.size)(_ && l2.contains(_))
进行以上比较,还有什么比以上更简洁的吗?
最佳答案
如果您想要的是“这些列表包含相同的元素,而与顺序或重复无关”:l1.toSet == l2.toSet
如果您想要的是“这些列表包含相同的元素,并且每个元素具有相同的重复次数”:l1.sorted == l2.sorted
如果您想要的是“这些列表包含相同的元素且大小相同,但是两个列表之间给定元素的重复次数可以不同”:l1.size == l2.size && l1.toSet == l2.toSet
关于scala - 是否有API方法可以比较Seq的内容而不考虑顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3622895/