Is there an API method that compares contents of a Seq irrespective of order?

前端 未结 2 1154
自闭症患者
自闭症患者 2020-12-03 06:55

Assuming:

val l1 = List(1,2,3) 
val l2 = List(2,3,1)

I want a method that confirms that l1 is equal to l2 (as in same contents but differen

相关标签:
2条回答
  • 2020-12-03 07:33

    While

    l1.sorted == l2.sorted
    

    is correct, it's runtime performance is O(n log n), because of the sorting. For large lists, you are probably better with

    l1.groupBy(identity) == l2.groupBy(identity)
    

    which should be O(n), assuming a decent implementation of groupBy.

    0 讨论(0)
  • 2020-12-03 07:45

    If what you want is "these lists contain the same elements, irrespective of order or repetitions":

    l1.toSet == l2.toSet

    If what you want is "these lists contain the same elements, and with the same number of repetitions of each":

    l1.sorted == l2.sorted

    If what you want is "these lists contain the same elements and are the same size, but the number of repetitions of a given element can differ between the two lists":

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

    0 讨论(0)
提交回复
热议问题