Scala-17:集合-常用函数

桃扇骨 2023-10-04 16:54 98阅读 0赞

Scala-17:集合-常用函数

一、基本属性和常用操作

(1)获取集合长度

  1. //(1)获取集合长度
  2. println(list.length)

(2)获取集合大小

  1. //(2)获取集合大小,等同于 length
  2. println(list.size)

(3)循环遍历

  1. //(3)循环遍历
  2. list.foreach(println)

(4)迭代器

  1. //(4)迭代器
  2. for (elem <- list.itera tor) {
  3. println(elem)
  4. }

(5)生成字符串

  1. //(5)生成字符串
  2. println(list.mkString(","))

(6)是否包含

  1. //(6)是否包含
  2. println(list.contains(3))

二、衍生集合

(1)获取集合的头

  1. //(1)获取集合的头
  2. println(list1.head)

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

  1. //(2)获取集合的尾(不是头的就是尾)
  2. println(list1.tail)

(3)集合最后一个数据

  1. //(3)集合最后一个数据
  2. println(list1.last)

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

  1. //(4)集合初始数据(不包含最后一个)
  2. println(list1.init)

(5)反转

  1. //(5)反转
  2. println(list1.reverse)

(6)取前(后)n 个元素

  1. //(6)取前(后)n 个元素
  2. println(list1.take(3)) println(list1.takeRight(3))

(7)去掉前(后)n 个元素

  1. //(7)去掉前(后)n 个元素
  2. println(list1.drop(3)) println(list1.dropRight(3))

(8)并集

  1. //(8)并集
  2. println(list1.union(list2))

(9)交集

  1. //(9)交集
  2. println(list1.intersect(list2))

(10)差集

  1. //(10)差集
  2. println(list1.diff(list2))

(11)拉链

  1. //(11)拉链 注:如果两个集合的元素个数不相等,那么会将同等数量的数据进行拉链,多余的数据省略不用
  2. println(list1.zip(list2))

(12)滑窗

  1. //(12)滑窗
  2. list1.sliding(2, 5).foreach(println)

三、集合计算简单函数

(1)求和

  1. //(1)求和
  2. println(list.sum)

(2)求乘积

  1. //(2)求乘积
  2. println(list.product)

(3)最大值

  1. //(3)最大值
  2. println(list.max)

(4)最小值

  1. //(4)最小值
  2. println(list.min)

(5)排序

  1. //(5)排序
  2. // (5.1)按照元素大小排序
  3. println(list.sortBy(x => x))
  4. // (5.2)按照元素的绝对值大小排序
  5. println(list.sortBy(x => x.abs))
  6. // (5.3)按元素大小升序排序
  7. println(list.sortWith((x, y) => x < y))
  8. // (5.4)按元素大小降序排序
  9. println(list.sortWith((x, y) => x > y))

(1)sorted

对一个集合进行自然排序,通过传递隐式的 Ordering

(2)sortBy

对一个属性或多个属性进行排序,通过它的类型。

(3)sortWith

基于函数的排序,通过一个 comparator 函数,实现自定义排序的逻辑。

四、集合计算高级函数

(1)过滤

遍历一个集合并从中获取满足指定条件的元素组成一个新的集合

  1. //(1)过滤
  2. println(list.filter(x => x % 2 == 0))

(2)转化/映射(map)

将集合中的每一个元素映射到某一个函数

  1. //(2)转化/映射
  2. println(list.map(x => x + 1))

(3)扁平化

  1. //(3)扁平化
  2. println(nestedList.flatten)

(4)扁平化+映射 注

flatMap 相当于先进行 map 操作,在进行 flatten 操作 集合中的每个元素的子元素映射到某个函数并返回新集合

  1. //(4)扁平化+映射 注:flatMap 相当于先进行 map 操作,在进行 flatten操作
  2. println(wordList.flatMap(x => x.split(" ")))

(5)分组(group)

按照指定的规则对集合的元素进行分组

  1. //(5)分组
  2. println(list.groupBy(x => x % 2))

(6)简化(归约)

Reduce 简化(归约) :通过指定的逻辑将集合中的数据进行聚合,从而减少数据,最终获取结果。

  1. val list = List(1,2,3,4)
  2. // 将数据两两结合,实现运算规则
  3. val i: Int = list.reduce( (x,y) => x-y )
  4. println("i = " + i)
  5. // 从源码的角度,reduce 底层调用的其实就是 reduceLeft
  6. //val i1 = list.reduceLeft((x,y) => x-y)
  7. // ((4-3)-2-1) = -2
  8. val i2 = list.reduceRight((x,y) => x-y)
  9. println(i2)

(7)折叠

Fold 折叠:化简的一种特殊情况。

  1. val list = List(1,2,3,4)
  2. // fold 方法使用了函数柯里化,存在两个参数列表
  3. // 第一个参数列表为 : 零值(初始值)
  4. // 第二个参数列表为: 简化规则
  5. // fold 底层其实为 foldLeft
  6. val i = list.foldLeft(1)((x,y)=>x-y)
  7. val i1 = list.foldRight(10)((x,y)=>x-y)
  8. println(i)
  9. println(i1)

两个集合合并

  1. // 两个 Map 的数据合并
  2. val map1 = mutable.Map("a"->1, "b"->2, "c"->3)
  3. val map2 = mutable.Map("a"->4, "b"->5, "d"->6)
  4. val map3: mutable.Map[String, Int] = map2.foldLeft(map1)
  5. {
  6. (map, kv) => {
  7. val k = kv._1
  8. val v = kv._2
  9. map(k) = map.getOrElse(k, 0) + v
  10. map
  11. }
  12. }
  13. println(map3)

发表评论

表情:
评论列表 (有 0 条评论,98人围观)

还没有评论,来说两句吧...

相关阅读