Scala集合常用函数 - 衍生集合

水善利万物而不争,处众人之所恶,故几于道💦

目录

  1. 获取集合的头
  2. 获取集合的尾(不是头的就是尾)
  3. 获取集合最后一个数据
  4. 集合初始数据(不包含最后一个)
  5. 集合反转
  6. 取集合前(后)n个元素
  7. 删除集合前(后)n个元素
  8. 并集
  9. 交集
  10. 差集
  11. 拉链
  12. 滑窗

下面这些方法在集合里面基本是通用的,这里以List为例

val list: List[Int] = List(1, 2, 3, 4, 5, 6, 7)
val list2: List[Int] = List(4, 5, 6, 7, 8, 9, 10)

1. 获取集合的头

println(list.head)

2. 获取集合的尾(不是头的就是尾)

println(list.tail)

集合里面除了头,其他的都是尾

3. 获取集合最后一个数据

println(list.last)

4. 集合初始数据(不包含最后一个)

println(list.init)

5. 集合反转

println(list.reverse)

6. 取集合前(后)n个元素

println(list.take(3))   // 取集合前3个元素
println(list.takeRight(5))  // 取集合后5个元素

7. 删除集合前(后)n个元素

println(list.drop(2))   // 删除集合前2个元素
println(list.dropRight(3))  // 删除集合后3个元素

8. 并集

val newList: List[Int] = list.union(list2)
println(newList)

这里的并集只是简单的将两个集合并在一起,不会像数学中那样去重。
如果两个Set集合求并集,就会去重。这个并集和集合本身的性质也有关

9. 交集

val newList = list.intersect(list2)
println(newList)

10. 差集

val newList: List[Int] = list.diff(list2)
val newList: List[Int] = list2.diff(list)
println(newList)

这两次差出来的集合结果不一样,因为操作数不同,list1.diff(list2)会在list1里面去掉list2里面的元素

11. 拉链

val newList: List[(Int, Int)] = list.zip(list2)

如果两个集合的元素个数不一样,那么同等数量的数据会进行拉链,多余的数据不会拉链,也不会报错

12. 滑窗

val iterator: Iterator[List[Int]] = list.sliding(3)
val iterator: Iterator[List[Int]] = list.sliding(2, 3)

返回值是一个迭代器。
一个参数表示窗口的大小,默认步长是1,也就是一次过一个元素
两个参数的话,第一个参数表示窗口大小,第二个参数表示步长,也就是一次步过几个元素

val list: List[Int] = List(1, 2, 3, 4, 5, 6, 7)

for (elem <- list.sliding(2)) {  // 窗口大小为2
  println(elem)
}
结果:
List(1, 2)
List(2, 3)
List(3, 4)
List(4, 5)
List(5, 6)
List(6, 7)

========================================================
for (elem <- list.sliding(3, 2)) { 
  println(elem)
}
结果:
List(1, 2, 3)
List(3, 4, 5)
List(5, 6, 7)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿年、嗯啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值