(第1版)griupByを使う
ある要素がリストにいくつ含まれているかを数えたMapを作って比較してる。
scala> def toGroupMap(l: List[String]): Map[String, Int] = | l.groupBy{ identity }.map{ case (k, v) => (k, v.size) } toGroupMap: (l: List[String])Map[String,Int] scala> toGroupMap(List("a", "b", "b")) == toGroupMap(List("b", "a", "b")) res6: Boolean = true // 以下の2つが false になるのが重要 scala> toGroupMap(List("a", "b", "b")) == toGroupMap(List("a", "a", "b")) res7: Boolean = false scala> toGroupMap(List("a", "b", "b")) == toGroupMap(List("a", "b")) res8: Boolean = false
(改訂版)yuroyoroさんの指摘を受けて
ソートしてから比較すればよかったのか。
scala> List("a", "b", "b").sorted == List("b", "a", "b").sorted res1: Boolean = true scala> List("a", "b", "b").sorted == List("a", "a", "b").sorted res2: Boolean = false scala> List("a", "b", "b").sorted == List("a", "b").sorted res3: Boolean = false