集合類之Set(十一)

簡介

  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大數據編程,瞭解更多技術內容。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章