scala 陣列匹配相同元素
阿新 • • 發佈:2019-02-20
接下來的操作大家都熟知:差集、交集和並集。以下示例能很好地解釋 Euler Diagram 函式:
val
num
1
=
Seq(
1
,
2
,
3
,
4
,
5
,
6
)
val
num
2
=
Seq(
4
,
5
,
6
,
7
,
8
,
9
)
//List(1, 2, 3)
num
1
.diff(num
2
)
//List(4, 5, 6)
num
1
.intersect(num
2
)
//List(1, 2, 3, 4, 5, 6, 4, 5, 6, 7, 8, 9)
num
1
.union(num
2
)
上述示例中的 union
保留了重複的元素。如果我們不需要重複怎麼辦?這時可以使用 distinct
函式:
//List(1, 2, 3, 4, 5, 6, 7, 8, 9)
num
1
.union(num
2
).distinct
快速匹配的函式:
def matchCells(a:Array[String] , y:Array[String]) = {
var sum = 0
for(x <- a){
if(a.exists({ y: String => y == x })){
sum += 1
}
}
sum
}
def matchCells2(a:Array[String] , y:Array[String]) = {
a.toSeq.intersect(y.toSeq).length
}