scala的常见函数与方法(二)

交集并集差集

val list = List(1,2,3,4,5)
val arr = Array(3,4,5,6,7)

//交集
arr.intersect(list).foreach(println)

//差集 在集合1中出现,集合2中没有出现的元素
list.diff(arr).foreach(println)

//并集
list.union(arr).distinct.foreach(println)

拉链操作

拉链操作就是以数据少的为主,从左到右,形成对偶元组

val list = List(1,2,3,4,5)
var arr = Array("a","b","c","c","d")

/list.zip(arr).foreach(print)  //(1,a)(2,b)(3,c)(4,d)

// zipWithIndex 默认给予一个角标与其组成元组

//arr.zipWithIndex.foreach(print) //(a,0)(b,1)(c,2)(d,3)

// 先调用 zip 形成对偶元组 在调用zipWithIndex
//arr.zip(list).zipWithIndex.foreach(print) //((a,1),0)((b,2),1)((c,3),2)((d,4),
// 元组数据可以转换成map 但要注意 map 的key不能重复,且取出不保证有序
val index: Array[(String, Int)] = arr.zipWithIndex
val map: Map[String, Int] = index.toMap

aggregate聚合

aggregate 方法是一个聚合函数,接受多个输入,并按照一定的规则运算以后输出一个结果值,在2.13+版本中被foldLeft取代.

val ls = List(1,2,3,4,5,10)
//对list集合开启并行化
val par: ParSeq[Int] = ls.par
//默认值只参与局部运算
val i: Int = par.aggregate(0)(_ + _, _ * _)
println(i)

窗口操作 slice / sliding

slice(from: Int, until: Int): List[A] 提取列表中从位置from到位置until(不含该位置)的元素列表

val arr = Array("a", "b", "c" ,"d","e","f")
// 起始角标  结束角标  [1,3) -->  1,2
println(arr.slice(0, 3).toList)

sliding(size: Int, step: Int): Iterator[List[A]] 将列表按照固定大小size进行分组,步进为step,step默认为1,返回结果为迭代器

val arr = Array("a", "b", "c" ,"d","e","f")
val iterator: Iterator[Array[String]] = arr.sliding(3, 3)
iterator.map(_.toList).foreach(println)
    List(a, b, c)
    List(d, e, f)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值