Scala数组函数二(dropRight~intersect)
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)相关推荐
- scala 数组集合(思维导图,初级必备)
scala 系列 scala 入门基础 scala 数组集合 scala 143个数组函数大全 scala 函数 scala OOP scala 高级扩展 scala 数组集合 scala 系列 前言 ...
- Numpy 一维、二维数组、size/dtype/shape属性、数组函数arange/linspace/logspace /diag/zeros/ones/random 、多维数组索引和筛选)
参考: https://gitbook.cn/gitchat/column/undefined/topic/5e3bceadec8d9033cf924665 打开 IPython ,创建 Python ...
- 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...
- javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...
学习Excel技术,关注微信公众号: excelperfect 数组函数是可以提供多个值的Excel内置函数.下面列出了8个Excel内置的数组函数: TRANSPOSE函数 MODE.MULT函数( ...
- scala中的二维数组_Scala中的多维数组
scala中的二维数组 多维数组 (Multi-dimensional arrays) An Array that stores data in the form multidimensional m ...
- c/c++ 一维数组、二维数组作为函数参数、返回值
c/c++ 一维数组.二维数组作为函数参数.返回值 一.一维数组作为参数 传入数组 int [] 为了规范,常常需要将数组的size一同传入,这是因为C++/C遇到参数为数组时,不会去一个个拷贝数组内 ...
- 大数据基础之Scala——Scala数组方法,史上最全,只要你能全部背上即可成为万人敬仰的大佬,任何Scala随便戳戳!!!
Scala数组 数组是一种可变的.可索引的数据集合.在Scala中用Array[T]的形式来表示java中的数组形式T[ ]. //声明一个数组对象 方法一:var numbers:[String]= ...
- Scala 数组详解
Scala 数组 Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组对于每一门编辑应语言来说都是重要的数据结构之一. 声明数组变量并不是声明 number0.number1.-.numb ...
- php 刀客友朋,数组与数组函数学习心得
//10个课堂未讲数组函数 /* array_column array_rand(); array_replace(); array_intresect(); array_diff(); array_ ...
最新文章
- NS3_Tutorial 中文版: 第一章 简介 第二章 资源
- 大整数减法(超过整型的表示范围)
- javax.servlet.ServletException: 实例化Servlet类[com.wk.web.RegisterServlet]异常
- FATAL ERROR: Could not find ./bin/my_print_defaults 解决方法
- vue 修改对象的值视图没有发生改变_在vue中处理对象属性改变视图不更新问题? - echart...
- html中tab页怎么写,html如何实现tab页面切换
- matlab 程序运行报错 调试 不退出函数
- python爬虫教程-Python爬虫全集
- 项目进度管理:活动之间的四种依赖关系
- ENVI5.2裁剪遥感图像指定区域
- 【企业微信】h5调试面板
- 【Paper】A Comprehensive Survey of Clustering Algorithms
- JAVA长方形正方形_正方形不是长方形的终极解决办法
- HBM(高带宽内存)、GDDR SDRAM(图形双倍速率同步动态随机存储器)
- How I Hacked Facebook with a Word Document
- 在eclipes中实现支付宝的沙箱模拟付款
- 操作系统的概念、四个特征以及os的发展和分类
- 阿里云天池【Docker练习场】踩坑指南
- 测试打字速度测试程序c语言,打字速度测试软件
- 赛车编程用c语言,钟神赛车 (C++代码)自己AC了都觉得搞笑