• Scala Set(集)是没有重复的对象集合,所有的元素都是唯一的。
  • Scala 集合分为可变的和不可变的集合。
  • 默认情况下,Scala 使用的是不可变集合,如果想使用可变集合,需引用 scala.collection.mutable.Set 包。
  • 默认引用 scala.collection.immutable.Set。

一、定义

(1)定长Set 的定义

scala> val set = Set(1,2,2,1,4,3)
set: scala.collection.immutable.Set[Int] = Set(1, 2, 4, 3)
scala> var set:Set[Int] = Set()   // 定义空集合,类型注释是必要的,因为系统需要将具体的类型分配给变量
set: Set[Int] = Set()

scala> var set:Set[Int] = Set(1,1,3,3,5,7)
set: Set[Int] = Set(1, 3, 5, 7)   // 不会存储重复的值

scala> var set = Set(1,3,5,7)     // 省略类型定义
set: scala.collection.immutable.Set[Int] = Set(1, 3, 5, 7)

(2)可变长 Set 的定义

scala> val set = scala.collection.mutable.Set(1, 2, 3)
set: scala.collection.mutable.Set[Int] = Set(1, 2, 3)

(3)连接集合

定义两个 Set

scala> val set1 = Set(1, 2, 3)
set1: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> val set2 = Set(4, 5)
set2: scala.collection.immutable.Set[Int] = Set(4, 5)

++ 连接集合

scala> var set3 = set1 ++ set2
set3: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)

Set.++() 方法连接两个或多个集合

scala> var set3 = set1.++(set2)
set3: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)

(4)最大值和最小值

scala> set3.max
res108: Int = 5

scala> set3.min
res109: Int = 1

(5)交集

使用 Set.&Set.intersect 方法来查找两个集合之间的交集(相交值)

scala> set3.&(set1)
res110: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> set3.intersect(set1)
res111: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

二、添加元素

scala> set += 1
res48: set.type = Set(1)

scala> set += 2
res49: set.type = Set(1, 2)

scala> set += (4,5,6)
res50: set.type = Set(1, 5, 2, 6, 4)

scala> set ++= Set(10,11,12)
res51: set.type = Set(12, 1, 5, 2, 6, 10, 4, 11)

虽然可变 Set 和不可变 Set 都有添加或删除元素的操作,但是有一个非常大的差别。

  • 对不可变 Set 进行操作,会产生一个新的 Set,原来的 Set 并没有改变,这与 List 一样
  • 而对可变 Set 进行操作,改变的是该 Set 本身,与 ListBuffer 类似

三、基本操作

  • head 此方法返回列表的第一个元素。
  • tail 此方法返回由除第一个之外的所有元素组成的列表。
  • isEmpty 如果列表为空,则此方法返回true,否则返回false。