集合类之Set(十一)

版权声明:菲立思教育 https://blog.csdn.net/cold_wolfie/article/details/82534035

简介

  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大数据编程,了解更多技术内容。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/cold_wolfie/article/details/82534035