首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否有API方法可以不考虑顺序地比较Seq的内容?

是否有API方法可以不考虑顺序地比较Seq的内容?
EN

Stack Overflow用户
提问于 2010-09-02 07:44:14
回答 2查看 14.2K关注 0票数 28

假设:

代码语言:javascript
复制
val l1 = List(1,2,3) 
val l2 = List(2,3,1)

我想要一个确认l1与l2相等的方法(因为内容相同,但顺序不同)。在List/Seq上有API方法来做这件事吗?

代码语言:javascript
复制
l1.sameElements(l2)

不起作用,因为它还验证了顺序。

我想出了以下几点:

代码语言:javascript
复制
l1.foldLeft(l1.size == l2.size)(_ && l2.contains(_))

有没有比上面更简洁的方法来做这个比较呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-02 07:49:08

如果你想要的是“这些列表包含相同的元素,不管顺序或重复”:

l1.toSet == l2.toSet

如果你想要的是“这些列表包含相同的元素,并且每个元素具有相同的重复次数”:

l1.sorted == l2.sorted

如果你想要的是“这些列表包含相同的元素并且大小相同,但是给定元素的重复次数在两个列表中可能不同”:

l1.size == l2.size && l1.toSet == l2.toSet

票数 51
EN

Stack Overflow用户

发布于 2010-09-02 12:04:26

代码语言:javascript
复制
l1.sorted == l2.sorted

是正确的,它的运行时性能是O(n log n),因为排序。对于大型列表,您可能会更好地使用

代码语言:javascript
复制
l1.groupBy(identity) == l2.groupBy(identity)

它应该是O(n),假设groupBy有一个不错的实现。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3622895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档