前言:
scala中的集合Set,用于存放无序非重复数据
对于非Set集合(Array/ArrayBuffer/List/ListBuffer),在做交集、并集、差集时必须转换为Set,否则元素不去重没有意义。而对于非Set类型集合元素去重,也有个很好的方法:distinct
scala> List(1,2,2,3).distinct 去重方法
一、求交集:使用&或者
interset方法求交集
scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法
res1: scala.collection.immutable.Set[Int] = Set(2)
scala> res1.foreach(println)
2
scala> Set(1,2,3) intersect Set(2,4)
scala> Array(1,2,3) intersect Array(3,4) // Array求交集的方法,不能用&
res9: Array[Int] = Array(3)
scala> List(1,2,3,2) intersect List(2,4)
res12: List[Int] = List(2)
二、求并集:可用++方法和
union求并集,Set/Array/ArrayBuffer/List/ListBuffer均适用
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(3,4)
res19: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 4)
scala> Array(1,2,3) ++ Array(3,4)
res20: Array[Int] = Array(1, 2, 3, 3, 4)
scala> List(1,2,3) ++ List(3,4)
res21: List[Int] = List(1, 2, 3, 3, 4)
三、求差集:--方法和diff方法求差集
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)