dropRight
功能同drop,去掉尾部的n个元素

val a=Array(1,2,3,4,5)
a.dropRight(2)
Array[Int] = Array(1, 2, 3)

dropWhile
去除当前数组中符合条件的元素,前提条件是,需要从当前数组的第一个元素起就要满足条件,直到碰到第一个不满足条件的元素结束。

val a=Array(3,2,3,4)
scala> val b=a.dropWhile(_>2)
b: Array[Int] = Array(2, 3, 4)
scala> val b=a.dropWhile(_>3)
//如果大于3则第一个不满足条件,返回整个数组
b: Array[Int] = Array(3, 2, 3, 4)

endsWith
判断是否以某个序列结尾,返回布尔值

scala> val a=Array(1,2,3,4)
a: Array[Int] = Array(1, 2, 3, 4)scala> val b=Array(3,4)
b: Array[Int] = Array(3, 4)scala> a.endsWith(b)
res52: Boolean = true

exists
判断当前数组是否包含符合条件的元素

var a=Array(1,2,3,4)
a.exists(_>2)
//结果
Boolean=true

filter
取得当前数组中符合条件的元素,组成新的数组返回。

var a=Array(1,2,3,4)
var c=a.filter(_>2)
//结果
c: Array[Int] = Array(3, 4)

filterNot
与上面filter的作用相反

var b=a.filterNot(_>2)
b: Array[Int] = Array(1, 2)

find
查找第一个符合条件的元素

val a=Array(1,2,3,4,5)
val b=a.find(x=>x>3)
//结果
b: Option[Int] = Some(4)

flatMap
对当前序列的每个元素进行操作,结果放入到新的数组返回。

var a=Array(1,2,3,4,5)
val b=a.flatMap(x=>1 to x)
//结果
b: Array[Int] = Array(1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5)

对每个元素从1取到本身,然后添加到一个数组中。

flatten
将二维数组的所有元素联合在一起,形成一个一维数组返回。

scala> val a=Array(Array(1,2,3),Array(4,5,6))
a: Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))scala> val b=a.flatten
b: Array[Int] = Array(1, 2, 3, 4, 5, 6)

fold
对序列中的每个元素按条件进行运算,和aggregate类似,但执行过程不同。

scala> var a=Array(1,2,3,4)
a: Array[Int] = Array(1, 2, 3, 4)
scala> def fun(a:Int,b:Int)={| println(a,b);| a+b| }
fun: (a: Int, b: Int)Intscala> val b=a.fold(10)(fun)
(10,1)
(11,2)
(13,3)
(16,4)
b: Int = 20
//简写
scala> val b=a.fold(10)(_+_)
b: Int = 20

foldLeft
同fold,从左到右计算
foldRight
从右往左计算

scala> val b=a.foldLeft(10)(_+_)
b: Int = 20scala> val b=a.foldRight(10)(_+_)
b: Int = 20

forall
检测数组中的元素是否都满足条件。返回类型为布尔型。

var a=Array(1,2,3,4)
val b=a.forall(_>2)
b: Boolean = falseval b=a.forall(_>0)
b: Boolean = true

foreach

def foreach(f: (A) ⇒ Unit): Unit

遍历数组中的元素,进行f操作

scala> a.foreach(println)
1
2
3
4
scala> a.foreach(x=>println(x+1))
2
3
4
5

groupBy
按条件进行分组,返回值类型是Map类型,每个key对应一个序列。

var a=Array(1,2,3,4)
a.groupBy(_>2)
//结果
scala.collection.immutable.Map[Boolean,Array[Int]] = Map(false -> Array(1, 2), true -> Array(3, 4))val arr=Array("hello scala","hello python","hello spark","happy study","happy love")
arr: Array[String] = Array(hello scala, hello python, hello spark, happy study, happy love)arr.groupBy(x=>x.split(" ")(0))
scala.collection.immutable.Map[String,Array[String]] = Map(happy -> Array(happy study, happy love), hello -> Array(hello scala, hello python, hello spark))
//模式匹配
val b=a.groupBy(x=>x match{case x if(x<3)=>"small"case x if(x==3)=>"mid"case _=>"big" })
b: scala.collection.immutable.Map[String,Array[Int]] = Map(mid -> Array(3), small -> Array(1, 2), big -> Array(4))

grouped
按指定数量分组,每组有 size 数量个元素,返回一个集合.

var a=Array(1,2,3,4)
a.grouped(2) //返回的是一个迭代器
res25: Iterator[Array[Int]] = non-empty iterator
a.grouped(2).foreach(x=>println(x.mkString))
12
34
//也可以转换成数组的形式
a.grouped(2).toArray
res26: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))

**hasDefiniteSize**
检测序列是否存在有限的长度,对应Stream这样的流数据,返回false。如果声明的集合的大小有限,则返回true,否则返回false,或者如果迭代器为空,则返回true,否则返回false。

scala> a
res29: Array[Int] = Array(1, 2, 3, 4)scala> a.hasDefiniteSize
res30: Boolean = truescala> a.toStream
res32: scala.collection.immutable.Stream[Int] = Stream(1, ?)scala> res32.hasDefiniteSize
res33: Boolean = false

head
返回序列的第一个元素,如果序列为空,将引发错误。

scala> a
res34: Array[Int] = Array(1, 2, 3, 4)scala> a.head
res35: Int = 1

headOption
返回的是Option对象,判断是否有值

var a=Array(1,2,3,4)
var b:Array[Int]=Array[Int]()
scala> a
res40: Array[Int] = Array(1, 2, 3, 4)scala> b
res41: Array[Int] = Array()scala> a.headOption
res42: Option[Int] = Some(1)
scala> b.headOption
res43: Option[Int] = None

indexOf
返回元素在序列中的索引,找到第一个就返回

scala> var a=Array('a','b','c','a','d')
a: Array[Char] = Array(a, b, c, a, d)scala> a.indexOf('a')
res44: Int = 0

我们也可以指定从某个索引处开始查找,找到第一个就返回

scala> a.indexOf('a',1)
res45: Int = 3

indexOfSlice
检测当前序列中是否包含另一个序列,并返回第一个匹配出现的元素的索引

var a=Array('a','b','c','a','d')
var b=Array('b','c')
var c=Array('a','c')
a.indexOfSlice(b)
//返回结果:
Int = 1
a.indexOfSlice(c)
//如果不存在返回-1
Int=-1

indexWhere
返回当前序列中第一满足条件的元素的索引

scala> var a=Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)scala> a.indexWhere(_>2)
res52: Int = 2

indices
返回当前序列元素索引的集合

scala> a.indices
res53: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

init
返回当前序列中不包含最后一个元素的新的序列

var a=Array(1,2,3,4,5)
scala> a.init
res54: Array[Int] = Array(1, 2, 3, 4)

inits
对当前的序列进行init操作,上一步的结果为下一步的操作对象:

var a=Array(1,2,3,4,5)
a.inits
//产生了一个迭代器
res57: Iterator[Array[Int]] = non-empty iterator
//结果
scala> a.inits.foreach(x=>println(x.mkString))
12345
1234
123
12
1

intersect
两个集合的交集

var a=Array(1,2,3,4,5)
var b=Array(3,4,5,6)a.intersect(b)
res65: Array[Int] = Array(3, 4, 5)

如果一个序列中元素的排列顺序与另一个不同,但又相同元素,一样可以取到:

var c=Array(1,3,5,7,2)
a.intersect(c)
res66: Array[Int] = Array(1, 2, 3, 5)

Scala数组函数二(dropRight~intersect)相关推荐

  1. scala 数组集合(思维导图,初级必备)

    scala 系列 scala 入门基础 scala 数组集合 scala 143个数组函数大全 scala 函数 scala OOP scala 高级扩展 scala 数组集合 scala 系列 前言 ...

  2. Numpy 一维、二维数组、size/dtype/shape属性、数组函数arange/linspace/logspace /diag/zeros/ones/random 、多维数组索引和筛选)

    参考: https://gitbook.cn/gitchat/column/undefined/topic/5e3bceadec8d9033cf924665 打开 IPython ,创建 Python ...

  3. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

    文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...

  4. javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...

    学习Excel技术,关注微信公众号: excelperfect 数组函数是可以提供多个值的Excel内置函数.下面列出了8个Excel内置的数组函数: TRANSPOSE函数 MODE.MULT函数( ...

  5. scala中的二维数组_Scala中的多维数组

    scala中的二维数组 多维数组 (Multi-dimensional arrays) An Array that stores data in the form multidimensional m ...

  6. c/c++ 一维数组、二维数组作为函数参数、返回值

    c/c++ 一维数组.二维数组作为函数参数.返回值 一.一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时,不会去一个个拷贝数组内 ...

  7. 大数据基础之Scala——Scala数组方法,史上最全,只要你能全部背上即可成为万人敬仰的大佬,任何Scala随便戳戳!!!

    Scala数组 数组是一种可变的.可索引的数据集合.在Scala中用Array[T]的形式来表示java中的数组形式T[ ]. //声明一个数组对象 方法一:var numbers:[String]= ...

  8. Scala 数组详解

    Scala 数组 Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一. 声明数组变量并不是声明 number0.number1.-.numb ...

  9. php 刀客友朋,数组与数组函数学习心得

    //10个课堂未讲数组函数 /* array_column array_rand(); array_replace(); array_intresect(); array_diff(); array_ ...

最新文章

  1. NS3_Tutorial 中文版: 第一章 简介 第二章 资源
  2. 大整数减法(超过整型的表示范围)
  3. javax.servlet.ServletException: 实例化Servlet类[com.wk.web.RegisterServlet]异常
  4. FATAL ERROR: Could not find ./bin/my_print_defaults 解决方法
  5. vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...
  6. html中tab页怎么写,html如何实现tab页面切换
  7. matlab 程序运行报错 调试 不退出函数
  8. python爬虫教程-Python爬虫全集
  9. 项目进度管理:活动之间的四种依赖关系
  10. ENVI5.2裁剪遥感图像指定区域
  11. 【企业微信】h5调试面板
  12. 【Paper】A Comprehensive Survey of Clustering Algorithms
  13. JAVA长方形正方形_正方形不是长方形的终极解决办法
  14. HBM(高带宽内存)、GDDR SDRAM(图形双倍速率同步动态随机存储器)
  15. How I Hacked Facebook with a Word Document
  16. 在eclipes中实现支付宝的沙箱模拟付款
  17. 操作系统的概念、四个特征以及os的发展和分类
  18. 阿里云天池【Docker练习场】踩坑指南
  19. 测试打字速度测试程序c语言,打字速度测试软件
  20. 赛车编程用c语言,钟神赛车 (C++代码)自己AC了都觉得搞笑

热门文章

  1. Comsol中Absolute Pressure的解释
  2. 东莞惠州楼盘又来深抢客 推盘量居历史高位 2012.5.12
  3. 在冒险中打拼:教师到手机大亨的打拼路
  4. 五秒人生:“从上帝到长袜子皮皮”的200个人物传记
  5. Shell编程之免交互
  6. SlowFast复现
  7. 全球语言标准码及其国家或地区对照
  8. Python 准确获取今天是星期几的代码(isoweekday和weekday)
  9. 企业邮箱“成员收发权限”功能详解【如何开通企业邮箱】
  10. 当php懈垢windows通用上传缺陷