Scala中的set集合

# Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。 

 

# 无序性 和 不重复性 ,无序性 决定set 集合是通过 hash 方法去查找元素,所以其查找元素的时间复杂度是 O(log n) ;      ps: 如果是列表(有序的)查找某个元素 需要从头到尾 去遍历一遍,所以其查找元素的时间复杂度是 O(n)   n插入的顺序

 

# Scala 集合分为可变的和不可变的集合。

默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。

默认引用 scala.collection.immutable.Set,不可变集合实例如下:

 

1.定义:

var set1 =Set(1,"一",2,"er")
set1.foreach(x => println(x))

ps: 虽然这里 用的var  但是Set 默认是不可变集合 ,所以set1 仍然是指向 一个不可变集合

输出:

 

eg2:

上边代码只是 让mySet 可变变量  指向了两次 不可变集合;

如果想生成 可变集合 需要先导入可变集合包  scala.collection.mutable.Set 

eg3:

ps:  val 声明的不可变变量,新增元素前后 指向的是同一个 集合元素,  只不过改变了 可变集合内部的元素

 

2.set集合常用操作:

2.1基本操作:

  • head 返回集合第一个元素
  • tail 返回一个集合,包含除了第一元素之外的其他元素
  • isEmpty 在集合为空时返回true

eg:

var set1 =Set("一",1,2,"er")
var set2 = Set()
println("set1.head :"+set1.head)
println("set1.tail:"+set1.tail)
println("set1.isEmpty:"+set1.isEmpty)
println("---------------")

println("set2 :"+set2.isEmpty)
println(set2.getClass.getName)

输出:

2.2set拼接

两种方法:  ++  或  .++()

eg:
var set1 =Set(1,2,3)
var set2 =Set(4,5)

var set3 = set1++set2
var set4 = set1.++(set2)

println("set3: "+set3)
println("set4: "+set4)

输出:

 

 

3.常用方法:

3.1查找集合中最大与最小元素:.max  .min

var set1 = Set(1,2,3,99,100.3)
println(set1.max)

/*set max min 2*/
var set2 = Set("a", "b","c")
println("set2: "+set2.max)

输出:

ps:如果 set 中 元素 c 改为大写C ,则set2最大元素是 b

 

 

3.2 apply检查set中是否存在某元素,返回True、False

var set1 =Set(1,"一",2,"er")

println(set1.apply(1))
println(set1.apply(9999))

输出:

 

3.3 count 统计满足条件的 元素个数

eg:
var set1 = Set(1,2,3,99,100.3)
println(set1.count(_ > 3  ))

输出:

ps;统计全部元素个数 .size

println(set1.size)

3.4  contains 检查是否包含元素  或 apply

eg:

var set1 = Set(1,2,3,99,100.3)

println(set1.apply(3))
println(set1.contains(2222222))

输出:

 

3.5 filter 过滤元素

 

eg:

var set1 = Set(1,2,3,99,100.3)
var set2 = set1.filter(_>3)

set2.foreach(println(_))

输出:

 

序号方法及描述
1

def +(elem: A): Set[A]

为集合添加新元素,x并创建一个新的集合,除非元素已存在

2

def -(elem: A): Set[A]

移除集合中的元素,并创建一个新的集合

3

def contains(elem: A): Boolean

如果元素在集合中存在,返回 true,否则返回 false。

4

def &(that: Set[A]): Set[A]

返回两个集合的交集

5

def &~(that: Set[A]): Set[A]

返回两个集合的差集

6

def +(elem1: A, elem2: A, elems: A*): Set[A]

通过添加传入指定集合的元素创建一个新的不可变集合

7

def ++(elems: A): Set[A]

合并两个集合

8

def -(elem1: A, elem2: A, elems: A*): Set[A]

通过移除传入指定集合的元素创建一个新的不可变集合

9

def addString(b: StringBuilder): StringBuilder

将不可变集合的所有元素添加到字符串缓冲区

10

def addString(b: StringBuilder, sep: String): StringBuilder

将不可变集合的所有元素添加到字符串缓冲区,并使用指定的分隔符

11

def apply(elem: A)

检测集合中是否包含指定元素

12

def count(p: (A) => Boolean): Int

计算满足指定条件的集合元素个数

13

def copyToArray(xs: Array[A], start: Int, len: Int): Unit

复制不可变集合元素到数组

14

def diff(that: Set[A]): Set[A]

比较两个集合的差集

15

def drop(n: Int): Set[A]]

返回丢弃前n个元素新集合

16

def dropRight(n: Int): Set[A]

返回丢弃最后n个元素新集合

17

def dropWhile(p: (A) => Boolean): Set[A]

从左向右丢弃元素,直到条件p不成立

 

18

def equals(that: Any): Boolean

equals 方法可用于任意序列。用于比较系列是否相等。

19

def exists(p: (A) => Boolean): Boolean

判断不可变集合中指定条件的元素是否存在。

20

def filter(p: (A) => Boolean): Set[A]

输出符合指定条件的所有不可变集合元素。

21

def find(p: (A) => Boolean): Option[A]

查找不可变集合中满足指定条件的第一个元素

22

def forall(p: (A) => Boolean): Boolean

查找指定条件是否适用于此集合的所有元素

23

def foreach(f: (A) => Unit): Unit

将函数应用到不可变集合的所有元素

24

def head: A

获取不可变集合的第一个元素

25

def init: Set[A]

返回所有元素,除了最后一个

26

def intersect(that: Set[A]): Set[A]

计算两个集合的交集

27

def isEmpty: Boolean

判断集合是否为空

28

def iterator: Iterator[A]

创建一个新的迭代器来迭代元素

29

def last: A

返回最后一个元素

30

def map[B](f: (A) => B): immutable.Set[B]

通过给定的方法将所有元素重新计算

31

def max: A

查找最大元素

32

def min: A

查找最小元素

33

def mkString: String

集合所有元素作为字符串显示

34

def mkString(sep: String): String

使用分隔符将集合所有元素作为字符串显示

35

def product: A

返回不可变集合中数字元素的积。

36

def size: Int

返回不可变集合元素的数量

37

def splitAt(n: Int): (Set[A], Set[A])

把不可变集合拆分为两个容器,第一个由前 n 个元素组成,第二个由剩下的元素组成

38

def subsetOf(that: Set[A]): Boolean

如果集合中含有子集返回 true,否则返回false

39

def sum: A

返回不可变集合中所有数字元素之和

40

def tail: Set[A]

返回一个不可变集合中除了第一元素之外的其他元素

41

def take(n: Int): Set[A]

返回前 n 个元素

42

def takeRight(n: Int):Set[A]

返回后 n 个元素

43

def toArray: Array[A]

将集合转换为数组

44

def toBuffer[B >: A]: Buffer[B]

返回缓冲区,包含了不可变集合的所有元素

45

def toList: List[A]

返回 List,包含了不可变集合的所有元素

46

def toMap[T, U]: Map[T, U]

返回 Map,包含了不可变集合的所有元素

47

def toSeq: Seq[A]

返回 Seq,包含了不可变集合的所有元素

48

def toString(): String

返回一个字符串,以对象来表示

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala集合分为可变集合和不可变集合两种。不可变集合一旦创建,就不能进行修改。Scala默认使用不可变集合,如果需要修改集合的元素,则需要使用可变集合Scala集合包括List、Set、Map等。常用的集合操作有: 1. 创建集合:可以使用不可变集合的apply方法或者可变集合的new关键字创建集合。 2. 遍历集合:可以使用for循环、foreach方法或者map方法遍历集合。 3. 过滤元素:可以使用filter方法过滤集合不符合条件的元素。 4. 转换集合:可以使用map方法将集合的元素进行转换。 5. 排序集合:可以使用sorted方法对集合的元素进行排序。 6. 操作集合:可以使用集合的各种方法进行元素的添加、删除、更新等操作。 示例代码: ``` // 创建不可变列表 val list = List(1, 2, 3) // 遍历列表 for (i <- list) { println(i) } // 过滤列表的偶数 val filteredList = list.filter(_ % 2 == 0) // 转换列表的元素 val mappedList = list.map(_ * 2) // 排序列表 val sortedList = list.sorted // 创建可变列表 val mutableList = scala.collection.mutable.ListBuffer(1, 2, 3) // 添加元素到可变列表 mutableList += 4 // 删除可变列表的元素 mutableList -= 2 // 更新可变列表的元素 mutableList(0) = 0 // 遍历可变列表 mutableList.foreach(println) ``` 以上是Scala集合的基本用法,具体使用时可以根据需要选择不同的集合类型和方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值