복붙노트

[SCALA] 순서의 서열의 내용에 관계없이 비교하는 API 방법이 있습니까?

SCALA

순서의 서열의 내용에 관계없이 비교하는 API 방법이 있습니까?

가정 :

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

I는 방법을 원하는 L1이 L2에 (동일 내용이지만 다른 순서에서와 같이) 동일한 것을 확인한다. 이 작업을 수행하는 목록 / 서열에 API 방법이 있습니까?

l1.sameElements(l2)

이뿐만 아니라 순서를 확인하는대로 작동하지 않습니다.

나는 다음을 마련했습니다 :

l1.foldLeft(l1.size == l2.size)(_ && l2.contains(_))

거기에 아무것도 위의이 비교를하는 것보다 더 간결인가?

해결법

  1. ==============================

    1.당신이 원하는 것은이 "이 목록에 상관없이 주문이나 반복 같은 요소를 포함"

    당신이 원하는 것은이 "이 목록에 상관없이 주문이나 반복 같은 요소를 포함"

    l1.toSet == l2.toSet

    당신이 원하는 것은이 "이 목록은 같은 요소를 포함하고, 각각의 반복의 동일한 번호로"

    l1.sorted == l2.sorted

    당신이 원하는 것은이 "이 목록은 같은 요소를 포함하고 같은 크기지만, 두 목록 사이에 다를 수 있습니다 주어진 요소의 반복 횟수입니다"

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

  2. ==============================

    2.동안

    동안

    l1.sorted == l2.sorted
    

    올, 그것의 런타임 성능 때문에 정렬 (N, N 로그) O이다. 큰 목록의 경우와 아마 더 나은

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

    이는 GROUPBY의 알맞은 구현을 가정하면, O (N)를해야한다.

  3. from https://stackoverflow.com/questions/3622895/is-there-an-api-method-that-compares-contents-of-a-seq-irrespective-of-order by cc-by-sa and MIT license