1. 程式人生 > >SCala 集(set)

SCala 集(set)

集是不重複元素的集合,列表得元素是按照插入得先後順序組織的,但是集的元素並不記錄插入的順序,而是以“雜湊”方法對元素的值進行組織,它允許你快速地找到某個元素。

1、不可變集

//1、集包括可變集和不可變集,預設情況下建立的集都是不可變集。
scala> var myset = Set("Hadoop",101)
myset: scala.collection.immutable.Set[Any] = Set(Hadoop, 101)

//新增元素
scala> myset += "Spark"

scala> myset
res1: scala.collection.immutable.Set[Any] = Set(Hadoop, 101, Spark)

2、可變集

宣告不可變集時,如果使用val,mySet += “Scala”執行時會報錯,所以需要宣告為var。

如果要宣告一個可變集,則需要引入scala.collection.mutable.Set包,具體如下(在Scala直譯器中執行):

scala> import scala.collection.mutable.Set
import scala.collection.mutable.Set

scala> val myMutableSet = Set("Database","BigData")
myMutableSet: scala.collection.mutable.Set[String] = Set(BigData, Database)

scala> myMutableSet += "Cloud Computing"
res2: myMutableSet.type = Set(BigData, Cloud Computing, Database)

scala> myMutableSet
res3: scala.collection.mutable.Set[String] = Set(BigData, Cloud Computing, Database)

scala> print(myMutableSet)
Set(BigData, Cloud Computing, Database)

宣告myMutableSet為val變數(不是var變數),由於是可變集,因此,可以正確執行myMutableSet += “Cloud Computing”,不會報錯。

 

注意:雖然可變集和不可變集都有新增或刪除元素的操作,但是,二者有很大的區別。對不可變集進行操作,會產生一個新的集,原來的集並不會發生變化。 而對可變集進行操作,改變的是該集本身,