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

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java大数据编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值