Scala系列 (四)Scala数组功能分类整理---更利于记忆与理解运用实战!!

写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术大数据开发猿。这名字是来自world order乐队的一首HAVE A NICE DAY。如今,走到现在很多坎坷和不顺,如今终于明白nice day是需要自己赋予的。
白驹过隙,时光荏苒,珍惜当下~~
写博客一方面是对自己学习的一点点总结及记录,另一方面则是希望能够帮助更多对大数据感兴趣的朋友。如果你也对 大数据与机器学习感兴趣,可以关注我的动态 https://blog.csdn.net/qq_35050438,让我们一起挖掘数据与人工智能的价值~

数组函数分类:

分区类函数:


partition(p: (T) ⇒ Boolean): (Array[T], Array[T])

  • 由于返回的是布尔值,所以只能返回两个区 (Array[T], Array[T])
 val a = Array(1, 2, 3, 4, 5)
 val b:(Array[Int],Array[Int]) = a.partition( {
   x:Int => x % 2 == 0})
 println(b._1.mkString(","))     // return  2,4
 println(b._2.mkString(","))     // return  1,3,5

在这里插入图片描述
groupBy[K](f: (T) ⇒ K): Map[K, Array[T]]

  • 按条件分组,条件由 f 匹配,返回值是Map类型,每个key对应一个序列,下面代码实现的是,把小于3的数字放到一组,大于3的放到一组,返回Map[String,Array[Int]]
    val a = Array(1, 2, 3,4)
    val b = a.groupBy( x => x match {
   
      case x if (x < 3) => "small"
      case _ => "big"
    })

grouped(size: Int): collection.Iterator[Array[T]]

  • 按指定数量分组,每组有 size 数量个元素,返回一个集合迭代器
val a = Array(1, 2, 3,4,5)
val b = a.grouped(3).toList
b.foreach((x) => println("第"+(b.indexOf(x)+1)+"组:"+x.mkString(",")))
/**
第1组:1,2,3
第2组:4,5
*/

span(p: (T) ⇒ Boolean): (Array[T], Array[T])

  • 分割序列为两个集合,从第一个元素开始,直到找到第一个不满足条件的元素止,之前的元素放到第一个集合,其它的放到第二个集合
    val a = Array(3,2,1,4,5)
    val b = a.span( {
   x:Int => x > 2})
    println(b._1.mkString(","))     //  3
    println(b._2.mkString(","))     //  2,1,4,5

排序类函数:


sortBy[B](f: (T) ⇒ B)(implicit ord: math.Ordering[B]): Array[T]

  • 按指定的排序规则排序

  • 如果数组里有数字有字符串,排序会报错

    val a = Array(3,2,1,4,5)
    val b = a.sortBy( {
   x:Int => x})// 升序
	val b1 = a.sortBy( {
   x:Int => 0-x})// 降序
    println(b.mkString(","))    // 1,2,3,4,5

sortWith(lt: (T, T) ⇒ Boolean): Array[T]

  • 自定义排序方法
  • 当数组里有数字有字符串就先转字符在判断
    val a = Array(3,2,1,4,5)
    val b = a.sortWith(_.compareTo(_) > 0)  // 大数在前

    println(b.mkString(","))    // 5,4,3,2,1

在这里插入图片描述

取值类函数:


apply(i: Int): T

  • 取出指定索引处得元素
arr.apply(index)

head()

  • 拿头元素
arr.head

last()

  • 拿尾元素
arr.last

init: Array[T]

  • 返回当前序列中不包含最后一个元素的序列
val a = Array(10, 2, 3, 40, 5)
val b = a.init
println(b.mkString(","))    // 10, 2, 3, 40

tail()

  • 去头元素
 val a = Array(10, 2, 3, 40, 5)
 val b = a.tail
 println(b.mkString(","))    // 2, 3, 40,5

slice(from: Int, until: Int): Array[T]

  • 取出当前序列中,from 到 until 之间的片段
    val a = Array(1,2,3,4,5)
    val b = a.slice(1,3)
    println(b.mkString(","))    // 2,3

take(n: Int): Array[T]

  • 返回当前序列中前 n 个元素组成的序列
 val a = Array(1,2,3,4,5)
 val b = a.take(3)       //  1,2,3

takeRight(n: Int): Array[T]

val a = Array(1,2,
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值