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


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已不鼓勵使用。

文章轉載自:http://hongjiang.info/scala-union-diff-intersect/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM