簡介
Scala Set是沒有重複的對象集合,所有的元素都是唯一的。分爲不可變和可變兩類。
默認情況下,Scala 使用的是不可變集合(默認引用 scala.collection.immutable.Set),如果想使用可變集合,需引用 scala.collection.mutable.Set 包。
簡單實例
//不可變Set
val set = Set(1,2,3)
println(set.getClass.getName) //
println(set.exists(_ % 2 == 0)) //true
println(set.drop(1)) //Set(2,3)
//可變Set
import scala.collection.mutable.Set
val mutableSet = Set(1,2,3)
println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet
//往集合內添加元素4
mutableSet.add(4)
//刪除值爲1的元素
mutableSet.remove(1)
//添加元素5
mutableSet += 5
//刪除值爲3的元素
mutableSet -= 3
println(mutableSet) // Set(5, 3, 4)
val another = mutableSet.toSet
println(another.getClass.getName) // scala.collection.immutable.Set
雖然可變Set和不可變Set都有添加或刪除元素的操作,但是有一個非常大的差別。對不可變Set進行操作,會產生一個新的set,原來的set並沒有改變,這與List一樣。而對可變Set進行操作,改變的是該Set本身,與ListBuffer類似。
Set類型
println("============Set============")
val set = Set(1, 2, 3, 4, 5)
println(set)
val setMore = set + 10
println("Set: " + setMore)
println("============HashSet============")
val hashSet = scala.collection.mutable.HashSet(1, 2, 3)
hashSet += 5
hashSet += 50
println("hashSet: " + hashSet)
println("============LinkedHashSet============")
val linkedHashSet = scala.collection.mutable.LinkedHashSet(1, 2, 3)
linkedHashSet += 5
linkedHashSet += 50
linkedHashSet += 4
println("linkedHashSet: " + linkedHashSet)
println("============SortedSet============")
val sortedSet = scala.collection.mutable.SortedSet(1, 2, 3, 5, 50, 4)
println("SortedSet" + sortedSet)
常見操作
//定義一個集合
//這裏使用的是mutable
scala> val numsSet=Set(3.0,5)
numsSet: scala.collection.mutable.Set[Double] = Set(5.0, 3.0)
//向集中添加一個元素,同前一講中的列表和數組不一樣的是
//,Set在插入元素時並不保元素的順序
//默認情況下,Set的實現方式是HashSet實現方式,
//集中的元素通過HashCode值進行組織
scala> numsSet+6
res20: scala.collection.mutable.Set[Double] = Set(5.0, 6.0, 3.0)
//遍歷集
scala> for ( i <- res20 ) println(i)
5.0
6.0
3.0
//如果對插入的順序有着嚴格的要求,則採用scala.collection.mutalbe.LinkedHashSet來實現
scala> val linkedHashSet=scala.collection.mutable.LinkedHashSet(3.0,5)
linkedHashSet: scala.collection.mutable.LinkedHashSet[Double] = Set(3.0, 5.0)
scala> linkedHashSet+6
res26: scala.collection.mutable.LinkedHashSet[Double] = Set(3.0, 5.0, 6.0)
忠於技術,熱愛分享。歡迎關注公衆號:java大數據編程,瞭解更多技術內容。