数组函数大全:
方法名:++
描述:合并两个序列,若类型不同以左侧类型为主,左侧集合的值在新集合的左侧
返回值:左边序列类型

方法名:++:
描述:合并两个序列,若类型不同则以右边的类型为主,
返回值:右边序列的类型

方法名:+:
描述:在数组前面添加一个元素,在数组的头部添加,冒号要离数组近
返回值:数组(类型依据集合中的元素类型而定)

方法名:/:
描述:对数组中的所有元素从左向右遍历,进行相同的迭代操作,是flodLeft的简写
返回值:计算的结果


方法名::+
描述:在数组后面添加一个元素,在数组的尾部添加,冒号要离数组近
返回值:数组(类型依据集合中的元素类型而定)

方法名::
描述:对数组中的所有元素从右向左遍历,进行相同的迭代操作,是flodRight的简写
返回值:计算的结果

方法名::
描述:对数组中的所有元素从右向左遍历,进行相同的迭代操作,是flodRight的简写
返回值:计算的结果

方法名:addString
描述:将数组中的元素逐个添加到StringBuilder中
返回值:StringBuilder

StringBuilder有三种使用方法:
第一种:直接使用a.addString(b),就直接将数组a中的值添加到StringBuilder中了

第二种:使用分隔符进行,a.addString(b,",")以“,”为分隔符,进行添加

第三种:使用分隔符和首尾添加的符号,a.addString(b,",")以“,”为分隔符,在开头添加“{”结尾添加“}”

方法名:aggregate
描述:是一个聚合函数,接收多个输入,按照一定规则运算之后输出一个结果值
返回值:

不分区计算:

接下来是分区进行计算:

方法名:andThen
描述:表示方法的连续调用,相当于嵌套函数 a(b(x))(需要满足第一个函数的返回值类型为第二个函数的输入值类型)
返回值:由第二个函数所确定
def a(i:Int)={
println("2*"+i)
2*i
}
def b(i:Int)={
println("3*"+i)
3*i
}
def result=a _ andThen b _

先执行第一个函数,将第一个函数的结果作为第二个函数的参数,进行操作
方法名:apply
描述:按照下标取出数组中的数据,等同于e(int)
返回值:由数组中元素的类型所确定
方法名:array
描述:Array是scala中的数组,一种用来存储同类型数据的元素结构,数组本身size不可变,但是数组中的元素可以变,可重新赋值
返回值:
方法名:canEqual
描述:判断两个对象是否可以进行比较(基本上都可以比较)
返回值:boolean
方法名:clone
描述:创建一个数组的副本,复制数组的值,但不会引用地址(浅克隆)
返回值:数组
是否是浅克隆的验证如下:
创建e(ccc,bb,aa),再创建数组 var f=e+:e形成一个二维数组

接着改变数组e的值为(a,aa,aaa)
数组e的值确实是改变了,但是f的值却没有改变

由此可以得出clone是浅克隆,并不会克隆地址,仅仅是克隆数据而已
方法名:collect
描述:输入参数类型为偏函数,对序列中的元素进行相对应的操作
返回值:

定义一个偏函数:是偶数就乘以9,否则不变

结果如下:

方法名:collectFirst
描述:输入参数类型为偏函数,对序列中第一个符合偏函数的元素执行相应操作
返回值:
定义一个偏函数:是偶数就为其平方,否则不变

只有第一个偶数作了改变:

方法名:combinations
combinations(n )
n为Int类型
描述:排列组合集合中所有包含字符不一样的组合,不考虑顺序,参数n表示组合的长度
返回值:

方法名:compose
描述:表示方法的连续调用,与andThen相反,compose是先调用第二个函数,然后将第二个函数的结果作为参数调用第一个函数
实例:
先定义两个函数

然后再定义一个函数将上面的2个函数结合起来

接着调用这个result函数,就可以连续调用,先是第二个函数,然后将其结果作为参数传入第一个函数进行操作

方法名:contains
描述:判断集合中是否包含指定对象
返回值:boolean

方法名:containsSlice
描述:判断集合中是否包含指定另一个集合
返回值:boolean

方法名:copyToBuffer
描述:将数组中的元素复制到Buffer中 Buffer的类型需要和源数组相匹配(需要先导包:import scala.collection.mutable.ArrayBuffer)
实例:
先导包:

创建一个Int 类型的ArrayBuffer: var buffer=new ArrayBufferInt

将数组a的数据拷贝至buffer

方法名:corresponds
描述:判断两个序列的长度以及对应位置的元素是否符合某个条件。
返回值:boolean
先判断长度是否相等,再判断对应位置的元素是否符合给定的条件

方法名:count
描述:统计符合条件的元素的个数
返回值:个数


方法名:diff
描述:计算当前数组与另一个数组的差集,即返回另外一个数组中没有的元素
返回值:一个新的数组

方法名:distinct
描述:去除当前数组中的重复元素
返回值:一个新的数组

方法名:drop
描述:删除数组中的前n个元素
返回值:一个新的数组

方法名:dropRight
描述:从末尾删除指定个数的元素
返回值:一个新的数组

方法名:dropWhile
描述:从第一个元素起,删除数组中符合条件的元素,直到遇到一个不满足条件的元素结束(即使后面还要元素)
若第一个元素不符合条件,就返回整个数组
返回值:一个新的数组


方法名:endsWith
描述:判断当前序列是否以某个序列结尾
返回值:布尔值

方法名:startsWith
描述:判断当前序列是否以某个序列开头
返回值:布尔值

方法名:exists
描述:判断当前数组是否包含符合条件的元素
返回值:布尔值

方法名:filter
描述: 筛选符合条件的元素,将符合条件的元素形成一个新的数组
返回值:数组
方法名:filterNot
描述: 筛选不符合条件的元素,将不符合条件的元素形成一个新的数组
返回值:数组

方法名:find
描述: 查找第一个符合条件的元素
返回值:Option

可通过get方法将值取出来

方法名:flatten
描述:将二维数组的所有元素联合在一起,形成一个一维数组
返回值:数组
Tips:必须是全二维数组,若是一维数组和二维数组的混合就不行

方法名:flatMap
描述: flatMap=map+flatten 即先对集合中的元素进行map,然后再对map后的每个元素(map之后的每个元素必须还是集合)中的元素进行flatten
返回值:数组
先生成一个二维数组

再将其扁平化

方法名:fold,foldleft
描述: 从左到右计算,对序列中的每个元素进行二元运算
返回值:
与aggregate类似
不分区就直接两两进行运算
分区则是将第一步运算得到的结果在继续重新进行两两运算
foldleft的分区计算没有效果

方法名:foldright
描述: 从右到左计算,对序列中的每个元素进行二元运算
返回值:
方法名:forall
描述: 检测序列中的元素是否都满足条件p
返回值:
方法名:foreach
描述: 遍历集合中的元素
返回值:

方法名:groupBy
描述: 按条件分组,由条件决定,返回值是Map类型,每个key对应一个数组
返回值:map键值对
a.groupBy(x=>x match{case x if(x>=3) => “big” case _ =>“small”})

res_xxx.foreach(x=>println(x._1 +":" +x._2.mkString(",")))

方法名:grouped
描述: 按指定数量分组,每个组有指定个数个元素
返回值:迭代器
每组2个元素,进行分组

方法名:hasDefiniteSize
描述: 检测序列是否存在有限的长度,对应Stream类型的流数据则返回false
返回值:boolean

方法名:head/last
描述: 返回序列中的第一个元素,如果序列为空则会报错
last:返回序列中的最后一个元素,如果序列为空则会报错
返回值:


方法名:headOption/lastOption
描述: 返回序列中的第一个元素的Option类型对象,如果序列为空,则返回None
lastOption:返回序列中最后一个元素的Option类型的对象
返回值:Option



方法名:indexOf/lastIndexOf
描述: 返回元素在序列中第一次出现的下标,也可以从指定的位置开始查找,如果找不到则返回-1
lastIndexOf从右向左遍历返回元素在序列中出现的下标
返回值:下标值

方法名:indexOfSlice/lastIndexOfSlice
描述: 检测当前序列中是否包含另一个指定的序列,并返回第一次出现该序列的索引(也可以指定开始的位置)
lastIndexOfSlice判断当前序列是否包含指定序列,并返回该序列最后一次出现的索引(也可以从指定位置开始)
返回值:下标值




方法名:indexWhere/lastIndexWhere
描述: 返回当前序列中第一个满足条件的元素的索引,也可以指定开始的位置
lastIndexOfWhere返回当前序列中最后一个满足条件的元素的索引,也可以指定索引,往前查找
返回值:

方法名:indices
描述: 返回当前序列的索引集合
返回值:下标值

方法名:init
描述: 返回当前序列中不包含最后一个元素的序列
返回值:

方法名:inits
描述: 对集合中的元素进行init迭代操作,该操作的返回值中,第一个值时当前序列的副本,包含当前序列所有的元素,最后一个值是空的
对头尾之间的值进行init操作,上一步的结果作为下一步的操作对象
返回值:迭代器

方法名:intersect
描述: 取两个集合的交集
返回值:集合

方法名:isDefinedAt
描述:判断序列中是否存在指定索引
返回值:boolean

方法名:isEmpty/nonEmpty
描述:判断序列是否为空
nonEmpty判断序列是否不为空
返回值:boolean

方法名:isTraversableAgain
描述:判断序列是否可以反复遍历(迭代器一般只能遍历一次,因此可作为判断是否是迭代器的依据)
返回值:boolean

方法名:iterator
描述:生成当前序列的迭代器
返回值:迭代器

方法名:last
描述:返回序列的最后一个元素,如果序列为空,将引发错误
返回值:

方法名:length/size
描述:返回序列中元素的个数
返回值:

方法名:lengthCompare
描述:比较序列的长度和参数n,返回序列的长度-n
返回值:

方法名:map
描述:对数组中的元素进行指定的操作,返回生成的新序列
返回值:

方法名:max/min/sum
描述: max:返回数组中最大的元素
min:返回最小的元素
sum:返回集合中所有元素的和
返回值:

方法名:maxBy/minBy
描述: maxBy返回序列中符合条件的第一个元素
minBy返回序列中不符合条件的第一个元素
返回值:
方法名:mkString
描述: 将序列中的所有元素拼接成一个字符串,可以设置参数:mkString(string:start,sep,string:end)以start开头,end结尾
以sep作为元素间的分隔符
返回值:
方法名:pddTo(len,elem)
描述: 填充序列,如果当前序列长度小于len,那么新产生的序列长度为len,多出的几个位置填充给定的元素elem,如果当前序列长度大于等于len,则返回当前序列
返回值:
方法名:par
描述: 开启分区,执行并行任务(多线程并行,结果是无序的)
返回值:

方法名:partition
描述: 按条件将序列拆分成两个数组,满足条件的放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组
返回值:

方法名:patch(int a,b,int c)
描述: 批量替换,从原序列的下标a处开始,后面的的c个元素将被替换成序列b
返回值:

方法名:permutations
描述:排列组合会选出所有顺序不同的字符组合
返回值:

方法名:prefixLength
描述: 给定一个条件,返回一个前置数列的长度(从开头计算,若原数列的第一个元素不满足的话,返回0)
返回值:

方法名:product
描述: 返回所有元素的乘积的值
返回值:

方法名:reduce/reduceLeft/reduceOption/reduceLeftOption/reduceRight/reduceRightOption
描述: 同fold,但是不需要初始值
返回值:


方法名:reverse
描述: 反转序列
返回值:

方法名:reverseIterator
描述: 生成一个反向迭代器
返回值:

方法名:reverseMap
描述: 同map,方向相反
返回值:

方法名:sameElements
描述: 判断两个序列是否顺序和对应位置上的元素全都一样(判断两个序列是否完全相同)
返回值:

方法名:scan/scanLeft/scanRight
描述: 类似fold,scan会把每一步计算的结果放到一个新的集合中返回,第一个元素就是传进去的值,而fold则是返回最后的结果
返回值:

方法名:segmentLength(条件,int n)
描述: 从序列下标的n处开始向后查找,返回满足条件的连续元素的长度,如果中间中断了,则不再继续统计
返回值:
方法名:seq
描述: 返回一个引用当前序列的sequential视图
返回值:

方法名:size
描述: 返回序列元素的个数,同length
返回值:

方法名:slice(int a,int b)
描述: 返回当前序列中从a到b之间的序列,不包括b处的元素(也即左闭合右开)
返回值:

方法名:sliding(int a,int b)
描述: a是元素个数,b是步长 。每次滑a步,步长为b
滑动操作,从第一个元素开始,每个元素和他后面的a-1个元素组成一个数组(长度为a),最终组成一个新的集合返回,当剩余元素个数不够时,则会结束。默认步长为1。每一组元素组合完毕之后,下一组从上一组起始元素位置+b后的位置处开始
返回值:

方法名:sortBy
描述: 按照指定的排序规则对序列排序
返回值:

方法名:sortWith
描述: 使用自定义的排序方法进行排序
返回值:

方法名:sorted
描述: 使用默认的排序方法进行排序
返回值:

方法名:span()
描述: 分割序列为两个集合,从第一个元素开始,直到找到第一个不满足条件的元素为止,之前的元素放到第一个集合,其他的放到第二个集合。
返回值:包含这两个数组的元组

方法名:splitAt(int n)
描述: 从指定位置开始,把序列拆分成两个集合
返回值:

方法名:startsWith()
描述: 判断序列是否以某个 指定序列开始,startsWith(that,offset):判断序列从指定下标处是否以某个序列开始
返回值:

方法名:stringPrefix
描述: 返回toString结果的前缀
返回值:

方法名:subSequence(start:Int,end:Int)
描述: 返回start和end之间的字符序列(左闭右开)
tips:只有String或者字符数组能用这个方法
返回值:

方法名:tail
描述: 返回当前序列中不包含第一个元素的序列
返回值:

方法名:tails
描述: 同inits,每一步都进行tail操作
返回值:

方法名:take
描述: 返回当前序列中,前n个元素组成的序列
返回值:

方法名:takeRight
描述: 返回当前序列中,后n个元素组成的序列
返回值:

方法名:takeWhile
描述: 返回当前序列中,从第一个元素开始,满足条件的元素组成的序列
返回值:

方法名:toArray/toBuffer/toIndexSeq/toIterator/toList/toMap/toSet/soStream/toVector/
描述: 转换成向对应的类型
返回值:
方法名:union
描述: 合并两个序列,同++
返回值:
方法名:unzip
描述: 将含有两个元素的数组,第一个元素取出组成一个序列,第二个元素取出组成一个序列
返回值:
方法名:unzip3
描述: 将含有两个元素的数组,第一个元素取出组成一个序列,第二个元素取出组成一个序列,第三个元素取出组成一个序列
返回值:
方法名:update
描述: update(i:Int,x:T):Array
将序列中i处的元素更新为x,直接在本数组上更改
返回值:
方法名:undated
描述: updated(i:Int,x:T):Array
将序列中的i处元素修改为x,返回修改后的数组
返回值:
方法名:view
描述: view(a:Int,b:Int)
返回当前序列中从a到b之间的序列,不包括b
返回值:
方法名:withFilter
描述: withFilter(p:booelan)
根据条件p过滤元素
返回值:
方法名:zip
描述:zip():Array
将两个长度相等的序列对应位置上的元素组成一个元组数组
返回值:
方法名:zipAll
描述: aipALL(b:Array,thisElement,thatElement):Array
同zip,但是允许两个序列长度不同,不足的自动填充,如果当前序列端,空表部分填充this,反之填充that
返回值:
方法名:zipWithIndex
描述: zipWithIndex:Array
序列中的每个元素和他的索引组成一个元组数组
返回值:
本文详细总结了Scala中数组和序列的各种操作方法,包括合并、添加元素、遍历、聚合函数、转换、分组、排序等。通过这些方法,可以高效地处理和操作Scala中的数组和序列数据。

249

被折叠的 条评论
为什么被折叠?



