apply(i:int) | 按下标取数组数,同arr(i) | 数组元素类型 | Array(1,2,3,4,5).apply(3) | 4 |
++ | 合并数组返回一个新数组,若不同类型以左边为准 | 左边类型 | Array(1,2) ++ List(7,8,9) | Array(1,2,7,8,9) |
union | 合并两个序列,同操作符++ | 左边类型 | Array(1,2) union List(3,4) | Array(1,2,3,4) |
++: | 同上两个类似,右边类型决定了结果的类型 | 右边类型 | Array(1,2) ++: List(3,4) | List(1,2,3,4) |
diff | 去交集 | 数组 | Array(1,2,3).diff(Array(2,4)) | Array(1,3) |
intersect | 取交集 | 数组 | Array(1,2,3).intersect(Array(2,4)) | Array(2) |
+: | 在数组前面添加一个元素 | 数组 | 1+:Array(2,3) | Array(1,2,3) |
:+ | 在数组后面加入一个元素 | 数组 | Array(2,3):+4 | Array(2,3,4) |
fold | 参数是一个值和一个操作 | 操作结果 | Array(1,2,3,4).fold(5)(_+_) | 15 |
foldLeft | 参数是一个值和一个操作,从左到右计算 | 操作结果 | Array(1,2,3,4).foldLeft(5)(_+_) | 15 |
/: | foldLeft简写方式 | 操作结果 | (5/:Array(1,2,3,4))(_+_) | 15 |
foldRight | 参数是一个值和一个操作,从右到左计算 | 操作结果 | Array(1,2,3,4).foldRight(5)(_+_) | 15 |
:\ | foldRight简写 | 操作结果 | (Array(1,2,3,4):\5)(_+_) | 15 |
addString | 将数组中的元素逐个添加到StringBuilder中 | StringBuilder | Array(1,2,3).addString(new StringBuilder()) | 123 |
addString(b:StringBuilder, sep:String) | 将数组中的元素逐个添加到StringBuilder中,并用分隔符分开 | StringBuilder | Array(1,2,3).addString(new StringBuilder(),",") | 1,2,3 |
addString(b:StringBuilder, start:String, sep:String, end:String) | 同上,在首尾各加一个字符串,并指定sep分隔符 | StringBuilder | Array(1,2,3).addString(new StringBuilder(),"{",",","}") | {1,2,3} |
charAt | 必须是字节数组,不常用可直接按数组下标取 | Char | Array(‘a’,‘b’).charAt(0) | a |
clone | 复制数组的值,不会引用地址 | 数组 | Array(1,2,3).clone | Array(1,2,3) |
collect | 参数是偏函数 | 偏函数处理后的数组 | Array(1,2).collect{case x if x%2==0 => x+1} | 3 |
collectFirst | 序列中查找第一个符合条件的元素并处理 | Option | Array(1,2).collectFirst{case x if x%2==0 => x+1} | Option[Int] = Some(3) |
combinations | 对数组进行排列组合,参数为个数 | 迭代器 | Array(1,2,3).combinations(2).foreach(x=>print(x.mkString(",")+" ")) | 1,2 1,3 2,3 |
contains | 判断是否包含元素 | Boolean | Array(1,2).contains(1) | true |
containsSlice | 判断是否包含子集 | Boolean | Array(1,2,3).containsSlice(Array(2)) | true |
copyToArray | 数组复制,可有开始位置:目标的下标 len是原数组的长度 | Unit | val a=Array(0,0,0); Array(1,2,3).copyToArray(a,1,2) | 0,1,2 |
copyToBuffer | 将数组中的元素复制到ArrayBuffer中 | Unit | val a=new ArrayBuffer[Int]; Array(1,2,3).copyToBuffer(a) | 0,1,2 |
corresponds | 判断两数组长度是否相等并且对应位置元素是否符合条件 | Boolean | Array(1,2).corresponds(Array(2,4))(_<_) | true |
count | 统计符合条件的个数 | Int | Array(1,2,3).count(_<2) | 1 |
distinct | 去除重复元素 | 数组 | Array(1,1,2).distinct | 1,2 |
drop | 从左边去除元素,参数是长度 | 数组 | Array(1,2,3).drop(2) | 3 |
dropRight | 从右边去除元素,参数是长度 | 数组 | Array(1,2,3).dropRight(2) | 1 |
dropWhile | 去除满足条件的元素直到遇到第一个不满足的结束 | 数组 | Array(1,2,-1).dropWhile(_<2) | 2,-1 |
endsWith | 判断数组是否以某个序列结尾 | Boolean | Array(1,2,3).endsWith(Array(2,3)) | true |
startsWith | 判断数组是否以某个序列开始,可有偏移量 | Boolean | Array(1,2,3).startsWith(Array(2,3),1) | true |
exists | 判断数组中是否存在满足条件的元素 | Boolean | Array(1,2,3).exists(_>2) | true |
filter | 满足条件留下不满足过滤 | 数组 | Array(1,2,3,1).filter(_< 3) | 1,2,1 |
find | 找第一个符合条件的元素 | Option | Array(1,2,3).find(_>1) | 2 |
flatten | 扁平化处理 | 数组 | Array(Array(1,2,3),Array(4,5,6)).flatten | 1,2,3,4,5,6 |
flatMap | 先map然后flatten | 数组 | Array(Array(1,4),Array(3,5)).flatMap(_.map(_*2)) | 2,8,6,10 |
forall | 检测序列中元素是否都满足条件,都满足为true | Boolean | Array(1,2).forall(_>0) | true |
foreach | 遍历操作,无返回值 | Unit | Array(1,2,3).foreach(print(_)) | 123 |
groupBy | 按条件分组,返回一个Map类型每个key对应一个数组 | Map | Array(1,2,3,4).groupBy((_%2==0)) | Map(false -> Array(1,3), true -> Array(2,4)) |
grouped | 按指定数量n分组,每个分组都有n个元素 | 迭代器 | Array(1, 2, 3, 4).grouped(2).foreach(x=>print(x.mkString(","))) | 1,23,4 |
hasDefiniteSize | 检测序列是否存在有限的长度,对应Stream这样的流数据则返回false | Boolean | Stream(1).hasDefiniteSize | false |
head | 返回第一个元素 | 元素类型 | Array(1,2,3).head | 1 |
headOption | 返回第一个元素的Option类型对象 | Option | Array(1,2,3).headOption | 1 |
indexOf(e[,i]) | 返回元素e在第一次出现的索引,可指定开始下标 | Int | Array(3,4,2).indexOf(4,2) | -1(未找到) |
indexOfSlice | 是否包含子数组,有的话返回第一次开始的下标,可指定开始下标 | Int | Array(1,2,3,2,3).indexOfSlice(Array(2,3),0)) | 1 |
indexWhere | 返回数组第一个满足条件的下标,可指定开始下标 | Int | Array(1,2).indexWhere(_>0,1) | 1 |
last | 返回最后一个元素 | 元素类型 | Array(1,2).last | 2 |
lastOption | 返回最后一个元素的Option类型对象 | Option | Array(1,2).lastOption | 2 |
lastIndexOf | 返回元素最后一次出现的下标,可有结束下标 | Int | Array(1,1,1).lastIndexOf(1,2) | 2 |
lastIndexOfSlice | 是否包含子序列,返回最后一次出现序列的下标,可有结束下标 | Int | Array(1,2,1,2).lastIndexOfSlice(Array(1,2),1) | 0 |
lastIndexWhere | 返回最后一个满足条件元素的下标 | Int | Array(1,2).lastIndexWhere(_>0) | 1 |
init | 返回不包含最后一个元素的数组 | 数组 | Array(1,2,3).init | 1,2 |
inits | 每一步进行init操作,最开始是自己,最后是空返回的,是迭代器[数组] | 迭代器 | Array(1,2,3).inits.foreach(x=>print(x.mkString("[",",","]"))) | [1,2,3][1,2][1][] |
tail | 返回不包含第一个元素的数组 | 数组 | Array(1,2,3,4).tail | 2,3,4 |
tails | 同inits,每一步都进行tail操作 | 迭代器 | Array(1,2,3).tails.foreach(x=>print(x.mkString("[",",","]"))) | [1,2,3][2,3][3][] |
isDefinedAt | 判断是否存在下标 | Boolean | Array(1,2).isDefinedAt(3) | false |
isEmpty | 判断是否为空 | Boolean | Array().isEmpty | true |
nonEmpty | 判断是否不为空 | Boolean | Array().nonEmpty | false |
indices | 返回索引集合 | Range | Array(1,2).indices | 0,1 |
iterator | 生成迭代器 | 迭代器 | Array(1,2).iterator.foreach(print(_)) | 12 |
isTraversableAgain | 判断序列是否可以反复遍历,对于Iterators返回false | Boolean | Array(1,2).iterator.isTraversableAgain | false |
length | 返回数组长度 | Int | Array(1,2).length | 2 |
lengthCompare | 比较数组长度和参数len,大小返回长度-len | Int | Array(1,2).lengthCompare(1) | 1 |
map | 对数组中的元素进行操作并且返回一个新数组 | 数组 | Array(1,2).map(_+10) | 11,12 |
max | 返回数组最大值 | 元素类型 | Array(1,2).max | 2 |
maxBy | 返回数组中符合条件的第一个元素 | 元素类型 | Array(1,2,3).maxBy(_>1) | 2 |
min | 返回数组最小值 | 元素类型 | Array(1,2).min | 1 |
minBy | 返回数组中不符合条件的第一个元素 | 元素类型 | Array(1,2,0).minBy(_>1) | 1 |
mkString | 将序列中所有元素拼接成一个字符串,可有开始符分隔符结束符 | String | Array(1,2).mkString("[",",","]") | [1,2] |
padTo(len,e) | 填充序列,如果当前数组长度小于len,那么新产生的数组长度是len,多出的几个位值填充e,若当前数组大于等于len返回当前数组 | 数组 | Array(1,2).padTo(5,0) | 1,2,0,0,0 |
partition | 按条件将序列拆分成两个数组,满足条件的放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组 | 二元组 | Array(1,2).partition(_%2==0) | Array(2),Array(1) |
patch(i,arr,len) | 批量替换,从原序列的i处开始后面的len个元素,将被替换成数组arr | 数组 | Array(1,2,3,4).patch(0,Array(7,8),1) | 7,8,2,3,4 |
permutations | 对数组进行全排列Ann | 迭代器 | Array(1,2,3).permutations.foreach(x=>print(x.toVector.mkString("[",",","]"))) | [1,2,3][1,3,2][2,1,3][2,3,1][3,1,2][3,2,1] |
prefixLength | 给定一个条件,返回数组中满足条件元素的个数 | Int | Array(1,2,3,4).prefixLength(_< 3) | 2 |
product | 返回所有元素乘积的值 | 要求是数值型 | Array(1,2,3,4,5).product | 120 |
reduce | 同fold,但是参数只有操作不需要初始值 | 元素类型 | Array(1,2,3,4).reduce(_+_) | 10 |
reduceLeft | 参数只有操作不需要初始值,从左向右 | 元素类型 | Array(1,2,3,4).reduceLeft(_+_) | 10 |
reduceRight | 参数只有操作不需要初始值,从右向左 | 元素类型 | Array(1,2,3,4).reduceRight(_+_) | 10 |
reduceLeftOption | 参数只有操作不需要初始值,从左向右计算,返回一个Option | Option | Array(1,2,3,4).reduceLeftOption(_+_) | 10 |
reduceRightOption | 参数只有操作不需要初始值,从右向左 | Option | Array(1,2,3,4).reduceRightOption(_+_) | 10 |
reverse | 反转序列,可用于降序排列 | 数组 | Array(1,4,3,2).sorted.reverse | 4,3,2,1 |
reverseIterator | 生成反向迭代器 | 迭代器 | Array(1,2,3).reverseIterator.foreach(print) | 321 |
reverseMap | 先map再反转 | 数组 | Array(1,2,3,4).reverseMap(_*3) | 12,9,6,3 |
sameElements | 判断两个序列是否都相等,即长度相等和对应下标元素相等 | Boolean | Array(1,2,3).sameElements(Array(1,2,3)) | true |
scan | 参数是一个数值和操作,会从这个数值起,把每一步的操结果放到一个新的数组中返回 | 数组 | Array(1,2,3).scan(4)(_+_) | 4,5,7,10 |
scanLeft | 参数是一个数值和操作,会从这个数值起,把每一步的操结果(从左到右)放到一个新的数组中返回 | 数组 | Array(1,2,3).scanLeft(4)(_+_) | 4,5,7,10 |
scanRight | 参数是一个数值和操作,会从这个数值起,把每一步的操结果(从右到左)放到一个新的数组中返回 | 数组 | Array(1,2,3).scanRight(4)(_+_) | 10,9,7,4 |
segmentLength(f,i) | 从序列的下标i开始向后查找,返回满足条件f的连续元素的长度,直到第一个不满足条件结束 | Int | Array(1,2,4,3).segmentLength(_<4,0) | 2 |
seq | 产生一个引用当前序列的sequential视图 | 视图 | Array(1,2,3,4).seq | WrappedArray(1,2,3,4) |
size | 返回数组元素个数 同length | Int | Array(1,2,3,4).size | 4 |
slice(i,j) | 返回当前序列中从i到j之间的序列,不包括j处的元素 | 数组 | Array(1,2,3,4).slice(0,3) | 1,2,3 |
sliding(n,step) | 滑动,从第一个元素开使取参数n个元素,然后第二个直到不够n个元素结束滑动,可设置步长step即第一个元素取完不从第二个元素滑动 | 迭代器 | Array(1,2,3,4).sliding(2,2).foreach(x=>print(x.mkString(",")+" ")) | 1,2 3,4 |
sortBy | 按指定的排序规则对序列排序 | 数组 | Array(3,2,1,4).sortBy(x=>0-x) | 4,3,2,1 |
sorted | 自然排序,默认升序 | 数组 | Array(3,2,1,4).sorted | 1,2,3,4 |
span | 将序列拆分成两个数组,从第一个元素开始,直到第一个不满足条件的元素为止,其中满足条件的元素放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组 | 二元组 | Array(1,2,3,4).span(x=>x%2!=0) | Array(1), Array(2,3,4) |
splitAt | 从指定位置开始,把数组拆分成两个数组 前一个数组不包括该下标 | 二元组 | Array(1,2,3,4).splitAt(3) | Array(1,2,3), Array(4) |
stringPrefix | 返回toString结果的前缀 | String | Array(1,2,3,4).stringPrefix | String = [I |
subSequence(i,j) | 返回i和j间的字符数组,不包含j处的元素 | CharSequence | Array(‘1’,‘2’,‘3’,‘4’).subSequence(0,3) | 123 |
sum | 求和,元素需要是数值类型 | 元素类型 | Array(1,2,3,4).sum | 10 |
take(n) | 返回当前数值中前n个元素组成的数组 | 数组 | Array(1,2,3,4).take(3) | 1,2,3 |
takeRight(n) | 返回当前数组中从右边开始后n个元素组成的数组 | 数组 | Array(1,2,3,4).takeRight(3) | 2,3,4 |
takeWhile | 返回从第一个元素开始,满足条件的元素组成的数组,直到第一个不满足条件的停止 | 数组 | Array(1,2,3,1).takeWhile(_<=2) | 1,2 |
toArray | 转换成Array类型 | Array | List(1,2,3,4).toArray | 1,2,3,4 |
toBuffer | 转换成Buffer类型 | Buffer | Array(1,2,3,4).toBuffer | 1,2,3,4 |
toIndexedSeq | 转换成IndexedSeq类型 | IndexedSeq | Array(1,2,3,4).toIndexedSeq | 1,2,3,4 |
toIterable | 转换成可迭代的类型 | Iterable | Array(1,2,3,4).toIterable | 1,2,3,4 |
toIterator | 转换成迭代器,同iterator方法 | Iterator | Array(1,2,3,4).toIterator | Iterator[Int] = non-empty iterator |
toList | 转换成List类型 | List | Array(1,2,3,4).toList | 1,2,3,4 |
toMap | 转换成Map类型,需要被转化序列中包含的元素是Tuple2类型 | Map | Array(1,2,3,4).map((_,1)).toMap | Map(1 -> 1, 2 -> 1, 3 -> 1, 4 -> 1) |
toSeq | 转换成Seq类型 | Seq | Array(1,2,3,4).toSeq | 1,2,3,4 |
toSet | 转换成Set类型 | Set | Array(1,2,3,4).toSet | 1,2,3,4 |
toStream | 转换成Stream类型 | Stream | Array(1,2,3,4).toStream | Stream(1, ?) |
toVector | 转换成Vector类型 | Vector | Array(1,2,3,4).toVector | 1,2,3,4 |
transpose | 矩阵转置,二维数组行列转换 | 数组 | Array(Array(1,2,3),Array(4,5,6),Array(7,8,9)).transpose | Array(Array(1, 4, 7), Array(2, 5, 8), Array(3, 6, 9)) |
zip | 将两个序列对应位置上的元素组成一个元组,只取两者下标相同的 | 元组数组 | Array(1,2,3,4).zip(Array(‘a’,‘b’,‘c’,‘d’,‘e’)) | Array((1,a), (2,b), (3,c), (4,d)) |
zipAll(arr,a2,a3) | 不足的自动填充,如果前面序列短,不足的元素填充为第二个参数,如果后面短,填充为第三个参数 | 元组数组 | Array(1,2,3,4).zipAll(Array(‘a’,‘b’,‘c’,‘d’,‘e’),1,‘a’) | Array((1,a), (2,b), (3,c), (4,d), (1,e)) |
zipWithIndex | 每个元素和它的下标组成一个2元组数组 | 元组数组 | Array(1,2,3,4,5).zipWithIndex | Array((1,0), (2,1), (3,2), (4,3), (5,4)) |
unzip | 将含有二元组的数组,每个元组的第一个元素组成一个数组,第二个元素组成一个数组 | 二元组 | Array((1,‘a’), (2,‘b’), (3,‘c’), (4,‘d’)).unzip | (Array(1, 2, 3, 4),Array(a, b, c, d)) |
unzip3 | 将含有三元组的数组,每个元组的第一个元素组成一个数组,第二个元素组成一个数组,第三个元素组成一个数组,返回包含这三个数组的三元组 | 三元组 | Array((1,2,3),(“a”,“b”,“c”)).unzip3 | (Array(1, a),Array(2, b),Array(3, c)) |
update(i,x) | 将数组中下标i处的元素更新为x | Unit | val a=Array(1,2,3,4); a.update(0,0);a | 0,2,3,4 |
updated(i,x) | 将数组中下标i处的元素更新为x,并返回替换后的数组 | 数组 | Array(1,2,3,4).updated(0,0) | 0,2,3,4 |
view(i,j) | 返回当前序列中从i到j之间的序列,不包括j处的元素 | IndexedSeqView | Array(1,2,3,4).view(0,3).mkString(",") | 1,2,3 |
withFilter | 根据条件p过滤元素 | FilterMonadic | Array(1,2,3,4).withFilter(_>2).map(x=>x) | 3,4 |