前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scala(十六) Set

scala(十六) Set

作者头像
用户1483438
发布2022-04-20 15:23:46
3320
发布2022-04-20 15:23:46
举报
文章被收录于专栏:大数据共享

Set 特性

不重复、无序

不可变set

创建Set&

  1. apply方式创建
代码语言:javascript
复制
val set=Set[Int](1,2,3,4,5)

查看setApi

进入 scala

代码语言:javascript
复制
$ scala
Welcome to Scala 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_172).
Type in expressions for evaluation. Or try :help.

scala> val set=Set[Int](1,2,3,4,5)
set: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)

set. <tab>

代码语言:javascript
复制
&              exists               min                 tails
&~             filter               minBy               take
+              filterNot            mkString            takeRight
++             find                 nonEmpty            takeWhile
++:            flatMap              par                 to
-              flatten              partition           toArray
--             fold                 product             toBuffer
/:             foldLeft             reduce              toIndexedSeq
:\             foldRight            reduceLeft          toIterable
WithFilter     forall               reduceLeftOption    toIterator
addString      foreach              reduceOption        toList
aggregate      genericBuilder       reduceRight         toMap
andThen        groupBy              reduceRightOption   toSeq
apply          grouped              repr                toSet
canEqual       hasDefiniteSize      sameElements        toStream
collect        hashCode             scan                toString
collectFirst   head                 scanLeft            toTraversable
companion      headOption           scanRight           toVector
compose        init                 seq                 transpose
contains       inits                size                union
copyToArray    intersect            slice               unzip
copyToBuffer   isEmpty              sliding             unzip3
count          isTraversableAgain   span                view
diff           iterator             splitAt             withFilter
drop           last                 stringPrefix        zip
dropRight      lastOption           subsetOf            zipAll
dropWhile      map                  subsets             zipWithIndex
empty          max                  sum                 |
equals         maxBy                tail

初始化集合

代码语言:javascript
复制
val set1=Set[Int](1,2,3,4,5)
val set2=Set[Int](4,5,6,7,8)
  • 交集

& 方式

代码语言:javascript
复制
val newSet=set1.&(set2)
代码语言:javascript
复制
println(newSet)
Set(5, 4)

intersect 方式

代码语言:javascript
复制
val newSet=set1.intersect(set2)
代码语言:javascript
复制
println(newSet)
Set(5, 4)
  • 返回两个集合的差集

&~

代码语言:javascript
复制
val newSet=set1.&~(set2)
代码语言:javascript
复制
println(newSet)
Set(1, 2, 3)

diff

代码语言:javascript
复制
val newSet=set1.diff(set2)
代码语言:javascript
复制
println(newSet)
Set(1, 2, 3)
  • 添加元素

+ 添加单个元素

代码语言:javascript
复制
val newSet=set1.+(10)
代码语言:javascript
复制
println(newSet)
Set(5, 10, 1, 2, 3, 4)
  • 合并两个集合

++

代码语言:javascript
复制
val newSet=set1.++(set2)
代码语言:javascript
复制
println(newSet)
Set(5, 1, 6, 2, 7, 3, 8, 4)

++:

代码语言:javascript
复制
val newSet=set1.++:(set2)
代码语言:javascript
复制
println(newSet)
Set(5, 1, 6, 2, 7, 3, 8, 4)
  • 删除元素

- 删除单个元素

代码语言:javascript
复制
val newSet=set1.-(2)
代码语言:javascript
复制
println(newSet)
Set(5, 1, 3, 4)

-- 删除一组元素

代码语言:javascript
复制
val newSet=set1.--(Set[Int](1,2))
代码语言:javascript
复制
println(newSet)
Set(5, 3, 4)
  • 遍历set
代码语言:javascript
复制
for(e <- set1){
  println(s"e=$e")
}
代码语言:javascript
复制
e=5
e=1
e=2
e=3
e=4

可变set

创建可变set 导包

代码语言:javascript
复制
import scala.collection.mutable

采用apply方式创建

代码语言:javascript
复制
val set: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)

查看可变set支持的api

代码语言:javascript
复制
scala> set.
&              dropRight            maxBy               sum
&~             dropWhile            min                 tail
+              empty                minBy               tails
++             equals               mkString            take
++:            exists               nonEmpty            takeRight
++=            filter               par                 takeWhile
+=             filterNot            partition           to
-              find                 product             toArray
--             flatMap              reduce              toBuffer
--=            flatten              reduceLeft          toIndexedSeq
-=             fold                 reduceLeftOption    toIterable
/:             foldLeft             reduceOption        toIterator
:\             foldRight            reduceRight         toList
<<             forall               reduceRightOption   toMap
WithFilter     foreach              remove              toSeq
add            genericBuilder       repr                toSet
addString      groupBy              result              toStream
aggregate      grouped              retain              toString
andThen        hasDefiniteSize      sameElements        toTraversable
apply          hashCode             scan                toVector
canEqual       head                 scanLeft            transpose
clear          headOption           scanRight           union
clone          init                 seq                 unzip
collect        inits                size                unzip3
collectFirst   intersect            sizeHint            update
companion      isEmpty              sizeHintBounded     view
compose        isTraversableAgain   slice               withFilter
contains       iterator             sliding             zip
copyToArray    last                 span                zipAll
copyToBuffer   lastOption           splitAt             zipWithIndex
count          map                  stringPrefix        |
diff           mapResult            subsetOf
drop           max                  subsets

&交集

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val set2: mutable.Set[Int] = mutable.Set[Int](4,5,6,7,8,9,10)
代码语言:javascript
复制
println(set1.&(set2))
Set(5, 6, 7, 4)

&~差集

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val set2: mutable.Set[Int] = mutable.Set[Int](4,5,6,7,8,9,10)

set1

代码语言:javascript
复制
println(set1.&~(set2))
Set(1, 2, 3)

set2

代码语言:javascript
复制
println(set2.&~(set1))
Set(9, 10, 8)
  • 添加元素

+ 添加单个元素并返回新的set

代码语言:javascript
复制
val set: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val newSet: mutable.Set[Int] = set.+(8)
代码语言:javascript
复制
println(newSet)
Set(1, 5, 2, 6, 3, 7, 4, 8)

++++: 添加一组元素并返回新的set

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val set2: mutable.Set[Int] = mutable.Set[Int](5,6,7,8,9,10)

val newSet: mutable.Set[Int] = set1.++(set2)
代码语言:javascript
复制
println(newSet)
Set(9, 1, 5, 2, 6, 3, 10, 7, 4, 8) //自动去重

++= 在原set列表中添加一组元素

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val set2: mutable.Set[Int] = mutable.Set[Int](5,6,7,8,9,10)

set1.++=(set2)
代码语言:javascript
复制
println(set1)
Set(9, 1, 5, 2, 6, 3, 10, 7, 4, 8)  // 自动去重

+= 在原set列表中添加单个元素

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
set1.+=(9)
代码语言:javascript
复制
println(set1)
Set(9, 1, 5, 2, 6, 3, 7, 4)
  • 删除元素

- 删除单个元素,并返回一个新的set,原set不受影响

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)

val newSet: mutable.Set[Int] = set1.-(3)
代码语言:javascript
复制
println(newSet)
Set(1, 5, 2, 6, 7, 4)

--删除一组元素,并返回一个新的set,原set不受影响

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val set2: mutable.Set[Int] = mutable.Set[Int](5,6,7,8,9,10)

val newSet: mutable.Set[Int] = set1.--(set2)
代码语言:javascript
复制
println(newSet)
Set(1, 2, 3, 4)

--= 在原set列表中删除一组元素

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)
val set2: mutable.Set[Int] = mutable.Set[Int](5,6,7,8,9,10)

set1.--=(set2)
代码语言:javascript
复制
println(set1)
Set(1, 2, 3, 4)

-=在原set列表中删除一个元素

代码语言:javascript
复制
val set1: mutable.Set[Int] = mutable.Set[Int](1, 2, 3, 4, 5, 6, 7)

set1.-=(4)
代码语言:javascript
复制
println(set1)
Set(1, 5, 2, 6, 3, 7)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Set 特性
  • 不可变set
  • 可变set
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档