1. 程式人生 > >scala中集合的交集、並集、差集

scala中集合的交集、並集、差集

原文網址:http://hongjiang.info/scala-union-diff-intersect/

scala中有一些api設計的很人性化,集合的這幾個操作是個代表:

交集:

scala> Set(1,2,3) & Set(2,4)   // &方法等同於interset方法
scala> Set(1,2,3) intersect Set(2,4)

並集:

scala> Set(1,2,3) ++ Set(2,4)
scala> Set(1,2,3) | Set(2,4)   // |方法等同於union方法
scala> Set(1,2,3) union Set(2,4)

差集:

scala> Set(1,2,3) -- Set(2,4) //得到 Set(1,3)
scala> Set(1,2,3) &~ Set(2,4) 
scala> Set(1,2,3) diff Set(2,4)

新增或刪除元素,可以直接用+,-方法來操作,新增刪除多個元素可以用元組來封裝:

scala> Set(1,2,3) + (2,4)
scala> Set(1,2,3) - (2,4)

另外,對於非Set集合,在做交集、並集、差集時必須轉換為Set,否則元素不去重沒有意義。
而對於非Set型別集合元素去重,也有個很好的方法:distinct,定義在 GenSeqLike 特質中

這個方法的好處是集合在去重後型別不變,比用Set去重更簡潔

scala> List(1,2,2,3).distinct
scala> List(1,2,2,3).toSet.toList 

補充,原用於去重的方法removeDuplicates已不鼓勵使用。