1.方法详解
1.1aggregate方法详解
- 作用:进行聚合计算,有两个参数,第一个参数为初始值,第二个参数为函数(有两个函数,第一个是进行局部聚合,第二个是进行全局聚合操作)
- 例子:对整个数组val list = Array(Array(1,2,3),Array(4,5,6),Array(7,8))进行全局求和运算
- 1.使用flatten+reduce方法:list.flatten.reduce(_ + _)
- 2.使用flatten+fold方法:list.flatten.fold(0)(_ + _)
- 3.使用aggregate方法:list.aggregate(0)(_ + _.sum, _ + _)
注意:0为初始值,第一个函数的第一个下划线为初始值0第二个下划线为每个Array,意思是0+每个Array的和作为一个结果,第二个函数是进行全局累加,将局部累加的结果全部相加
scala> val list = Array(Array(1,2,3),Array(4,5,6),Array(7,8))
list: Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8))
scala> list.flatten.reduce(_ + _)
res9: Int = 36
scala> list.flatten.fold(0)(_ + _)
res10: Int = 36
scala> list.aggregate(0)(_ + _.sum, _ + _)
res11: Int = 36
1.2其他方法如下表:
方法名 |
描述 |
返回值类型 |
举例 |
apply(int i) |
按下标取数组数据 同a(i) |
数组元素类型 |
Array(1 ,2,3,4,5).apply(3) |
++ |
合并数组返回一个新数组,若不同类型以左边为准 |
左边类型 |
Array(1 ,2) ++ List(7,8,9) |
union |
合并两个序列,同操作符 ++ |
左边类型 |
Array(1,2) union List(3,4) |
++: |
同上两个类似,右边类型决定了结果的类型 |
右边类型 |
Array(1,2) ++: List(3,4) |
diff |
去交集 |
数组 |
Array(1,2,3).diff(Array(2,4)) |
intersect |
取交集 |
数组 |
Array(1,2,3).intersect(Array(2,4)) |
+: |
在数组前面添加一个元素 |
数组 |
1 +:Array(2,3) |
:+ |
在数组后面加入一个元素 |
数组 |
Array(2,3):+4 |
fold |
参数是一个值和一个操作 |
操作结果 |
Array(1, 2, 3, 4).fold(5)(_+_) |
foldLeft |
参数是一个值和一个操作,从左到右计算 |
操作结果 |
Array(1, 2, 3, 4).foldLeft(5)(_+_) |
/: |
foldLeft简写方式 |
操作结果 |
(5/:Array(1, 2, 3, 4))(_+_) |
foldRight |
参数是一个值和一个操作,从右到左计算 |
操作结果 |
Array(1, 2, 3, 4).foldRight(5)(_+_) |
:\ |
foldRight简写 |
操作结果 |
(Array(1, 2, 3, 4):\5)(_+_) |
addString |
将数组中的元素逐个添加到StringBuilder中 |
StringBuilder |
Array(1,2,3).addString(new StringBuilder()) |
|
将数组中的元素逐个添加到StringBuilder中,并用分隔符分开 |
StringBuilder |
Array(1,2,3).addString(new StringBuilder(),",") |
charAt |
必须是字节数组,不常用可直接按数组下标取 |
Char |
Array(‘a’,‘b’).charAt(0) 单引号复制会出错手写吧 |
clone |
复制数组的值,不会引用地址 |
数组 |
Array(1,2,3).clone |
collect |
参数是偏函数 |
偏函数处理后的数组 |
Array(1,2).collect{case x if x%2==0 => x+1} |
collectFirst |
序列中查找第一个符合条件的元素并处理 |
Option |
Array(1,2).collectFirst{case x if x%2==0 => x+1} |
combinations |
对数组进行排列组合 参数为个数 |
迭代器 |
Array(1,2,3).combinations(2).foreach(x=>print(x.mkString(",")+" ")) |
contains |
判断是否包含元素 |
Boolean |
Array(1,2).contains(1) |
containsSlice |
判断是否包含子集 |
Boolean |
Array(1,2,3).containsSlice(Array(2)) |
copyToArray |
数组复制,可有开始位置:目标的下标 len是原数组的长度 |
Unit |
val a = Array(0,0,0);Array(1,2,3).copyToArray(a,1,2) |
copyToBuffer |
将数组中的元素复制到ArrayBuffer中 |
Unit |
val a = new ArrayBuffer[Int];Array(1,2,3).copyToBuffer(a) |
corresponds |
判断两数组长度是否相等并且对应位置元素是否符合条件 |
Boolean |
Array(1, 2).corresponds(Array(2,4))(_<_) |
count |
统计符合条件的个数 |
Int |
Array(1,2,3).count(_<2) |
distinct |
去除重复元素 |
数组 |
Array(1,1,2).distinct |
drop |
从左边去除元素 参数是长度 |
数组 |
Array(1,2,3).drop(2) |
dropRight |
从右边去除元素 参数是长度 |
数组 |
Array(1,2,3).dropRight(2) |
dropWhile |
去除满足条件的元素直到遇到第一个不满足的结束 |
数组 |
Array(1,2,-1).dropWhile(_<2) |
endsWith |
判断数组是否以某个序列结尾 |
Boolean |
Array(1,2,3).endsWith(Array(2,3)) |
startsWith |
判断数组是否以某个序列开始,可有偏移量 |
Boolean |
Array(1,2,3).startsWith(Array(2,3),1) |
exists |
判断数组中是否存在满足条件的元素 |
Boolean |
Array(1,2,3).exists(_>2) |
filter |
满足条件留下不满足过滤 |
数组 |
Array(1,2,3,1).filter(_ < 3) |
find |
找第一个符合条件的元素 |
Option |
Array(1,2,3).find(_>1) |
flatten |
扁平化处理 |
数组 |
Array(Array(1,2,3),Array(4,5,6)).flatten |
flatMap |
先map然后flatten |
数组 |
Array(Array(1,2),Array(4,5)).flatMap(_.map(_*2)) |
forall |
检测序列中元素是否都满足条件 都满足为true |
Boolean |
Array(1, 2).forall(_>0) |
foreach |
遍历操作 无返回值 |
Unit |
Array(1,2,3).foreach(print(_)) |
groupBy |
按条件分组 返回一个Map类型每个key对应一个数组 |
Map |
Array(1, 2, 3, 4).groupBy((_%2==0)) |
grouped |
按指定数量n分组,每个分组都有n个元素 |
迭代器 |
Array(1, 2, 3, 4).grouped(2).foreach(x=>print(x.mkString(","))) |
hasDefiniteSize |
检测序列是否存在有限的长度,对应Stream这样的流数据则返回false |
Boolean |
Stream(1).hasDefiniteSize |
head |
返回第一个元素 |
元素类型 |
Array(1,2,3).head |
headOption |
返回第一个元素的Option类型对象 |
Option |
Array(1,2,3).headOption |
indexOf(e[,i]) |
返回元素e在第一次出现的索引,可指定开始下标 |
Int |
Array(1,1,1).indexOf(1,1) |
indexOfSlice |
是否包含子数组有的话返回第一次开始的下标可指定开始下标 |
Int |
Array(1,2,3,2,3).indexOfSlice(Array(2,3,4)) |
indexWhere |
返回数组第一个满足条件的下标 可指定开始下标 |
Int |
Array(1,2).indexWhere(_>0,1) |
last |
返回最后一个元素 |
元素类型 |
Array(1,2).last |
lastOption |
返回最后一个元素的Option类型对象 |
Option |
Array(1,2).lastOption |
lastIndexOf |
返回元素最后一次出现的下标可有结束下标 |
Int |
Array(1,1,1).lastIndexOf(1,1) |
lastIndexOfSlice |
是否包含子序列 返回最后一次出现序列的下标可有结束下标 |
Int |
Array(1,2,1,2).lastIndexOfSlice(Array(1,2),1) |
lastIndexWhere |
返回最后一个满足条件元素的下标 |
Int |
Array(1,2).lastIndexWhere(_>0) |
init |
返回不包含最后一个元素的数组 |
数组 |
Array(1,2,3).init |
inits |
每一步进行init操作最开始是自己最后是空返回的是迭代器[数组] |
迭代器 |
Array(1,2,3).inits.foreach(x=>print(x.mkString("[",",","]"))) |
tail |
返回不包含第一个元素的数组 |
数组 |
Array(1,2,3,4).tail |
tails |
同 inits,每一步都进行 tail 操作 |
迭代器 |
Array(1,2,3).tails.foreach(x=>print(x.mkString("[",",","]"))) |
isDefinedAt |
判断是否存在下标 |
Boolean |
Array(1,2).isDefinedAt(3) |
isEmpty |
判断是否为空 |
Boolean |
Array().isEmpty |
nonEmpty |
判断是否不为空 |
Boolaen |
Array().nonEmpty |
indices |
返回索引集合 |
Range |
Array(1,2).indices |
iterator |
生成迭代器 |
迭代器 |
Array(1,2).iterator.foreach(print(_)) |
isTraversableAgain |
判断序列是否可以反复遍历,对于Iterators返回false |
Boolean |
Array(1,2).iterator.isTraversableAgain |
length |
返回数组长度 |
Int |
Array(1,2).length |
lengthCompare |
比较数组长度和参数len大小返回长度-len |
Int |
Array(1,2).lengthCompare(1) |
map |
对数组中的元素进行操作并且返回一个新数组 |
数组 |
Array(1,2).map(_+10) |
max |
返回数组最大值 |
元素类型 |
Array(1,2).max |
maxBy |
返回数组中符合条件的第一个元素 |
元素类型 |
Array(1,2,3).maxBy(_>1) |
min |
返回数组最小值 |
元素类型 |
Array(1,2).min |
minBy |
返回数组中不符合条件的第一个元素 |
元素类型 |
Array(1,2,0).minBy(_>1) |
mkString |
将序列中所有元素拼接成一个字符串,可有开始符分隔符结束符 |
String |
Array(1,2).mkString("[",",","]") |
padTo(len,e) |
填充序列,如果当前数组长度小于len,那么新产生的数组长度是len,多出的几个位值填充e,若当前数组大于等于len返回当前数组 |
数组 |
Array(1,2).padTo(5,0) |
partition |
按条件将序列拆分成两个数组,满足条件的放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组 |
二元组 |
Array(1,2).partition(_%2==0) |
patch(i,arr,len) |
批量替换,从原序列的i处开始后面的len个元素,将被替换成数组arr |
数组 |
Array(1,2,3,4).patch(0,Array(7,8),1) |
permutations |
对数组进行全排列 Ann |
迭代器 |
Array(1,2,3).permutations.foreach(x=>print(x.toVector.mkString("[",",","]"))) |
prefixLength |
给定一个条件返回数组中满足条件元素的个数 |
Int |
Array(1, 2, 3, 4).prefixLength(_ < 3) |
product |
返回所有元素乘积的值 |
要求是数值型 |
Array(1, 2, 3, 4.5).product |
reduce |
同 fold,但是参数只有操作不需要初始值 |
元素类型 |
Array(1, 2, 3, 4).reduce(_ + _) |
reduceLeft |
参数只有操作不需要初始值,从左向右 |
元素类型 |
Array(1, 2, 3, 4).reduceLeft(_ + _) |
reduceRight |
参数只有操作不需要初始值,从右向左 |
元素类型 |
Array(1, 2, 3, 4).reduceRight(_ + _) |
reduceLeftOption |
参数只有操作不需要初始值,从左向右计算,返回一个Option |
Option |
Array(1, 2, 3, 4).reduceLeftOption(_ + _) |
reduceRightOption |
参数只有操作不需要初始值,从右向左 |
Option |
Array(1, 2, 3, 4).reduceRightOption(_ + _) |
reverse |
反转序列,可用于降序排列 |
数组 |
Array(1, 4, 3, 2).sorted.reverse |
reverseIterator |
生成反向迭代器 |
迭代器 |
Array(1, 2, 3).reverseIterator.foreach(print) |
reverseMap |
先map再反转 |
数组 |
Array(1, 2, 3, 4).reverseMap(_*3) |
sameElements |
判断两个序列是否都相等即长度相等 对应下标元素相等 |
Boolean |
Array(1, 2, 3).sameElements(Array(1, 2, 3)) |
scan |
参数是一个数值和操作,会从这个数值起,把每一步的操结果放到一个新的数组中返回 |
数组 |
Array(1, 2, 3).scan(4)(_ + _) |
scanLeft |
参数是一个数值和操作,会从这个数值起,把每一步的操结果(从左到右)放到一个新的数组中返回 |
数组 |
Array(1, 2, 3).scanLeft(4)(_ + _) |
scanRight |
参数是一个数值和操作,会从这个数值起,把每一步的操结果(从右到左)放到一个新的数组中返回 |
数组 |
Array(1, 2, 3).scanRight(4)(_ + _) |
segmentLength(f,i) |
从序列的下标i开始向后查找,返回满足条件f的连续元素的长度,直到第一个不满足条件结束 |
Int |
Array(1, 2, 4, 3).segmentLength(_<4,0) |
seq |
产生一个引用当前序列的sequential视图 |
视图 |
Array(1, 2, 3, 4).seq |
size |
返回数组元素个数 同length |
Int |
Array(1, 2, 3, 4).size |
slice(i,j) |
返回当前序列中从i到j之间的序列,不包括j处的元素 |
数组 |
Array(1, 2, 3, 4).slice(0,3) |
sliding(n,step) |
滑动,从第一个元素开使取参数n个元素,然后第二个直到不够n个元素结束滑动,可设置步长step即第一个元素取完不从第二个元素滑动 |
迭代器 |
Array(1, 2, 3, 4).sliding(2,2).foreach(x=>print(x.mkString(",")+" ")) |
sortBy |
按指定的排序规则对序列排序 |
数组 |
Array(3, 2, 1, 4).sortBy(x=>0-x) |
sorted |
自然排序,默认升序 |
数组 |
Array(3, 2, 1, 4).sorted |
span |
将序列拆分成两个数组,从第一个元素开始,直到第一个不满足条件的元素为止,其中满足条件的元素放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组 |
二元组 |
Array(1, 2, 3, 4).span(x=>x%2!=0) |
splitAt |
从指定位置开始,把数组拆分成两个数组 前一个数组不包括该下标 |
二元组 |
Array(1, 2, 3, 4).splitAt(3) |
stringPrefix |
返回toString结果的前缀 |
String |
Array(1, 2, 3, 4).stringPrefix |
subSequence(i,j) |
返回i和j间的字符数组,不包含j处的元素 |
CharSequence |
Array(‘1’, ‘2’, ‘3’, ‘4’).subSequence(0,3) |
sum |
求和,元素需要是数值类型 |
元素类型 |
Array(1, 2, 3, 4).sum |
take(n) |
返回当前数值中前n个元素组成的数组 |
数组 |
Array(1, 2, 3, 4).take(3) |
takeRight(n) |
返回当前数组中从右边开始后n个元素组成的数组 |
数组 |
Array(1, 2, 3, 4).takeRight(3) |
takeWhile |
返回从第一个元素开始,满足条件的元素组成的数组 直到第一个不满足条件的停止 |
数组 |
Array(1, 2, 3, 1).takeWhile(_<=2) |
toArray |
转换成 Array 类型 |
Array |
List(1, 2, 3, 4).toArray |
toBuffer |
转换成Buffer类型 |
Buffer |
Array(1, 2, 3, 4).toBuffer |
toIndexedSeq |
转换成 IndexedSeq类型 |
IndexedSeq |
Array(1, 2, 3, 4).toIndexedSeq |
toIterable |
转换成可迭代的类型 |
Iterable |
Array(1, 2, 3, 4).toIterable |
toIterator |
转换成迭代器,同iterator方法 |
Iterator |
Array(1, 2, 3, 4).toIterator |
toList |
转换成 List 类型 |
List |
Array(1,2,3,4).toList |
toMap |
转转换成Map类型,需要被转化序列中包含的元素是 Tuple2类型 |
Map |
Array(1,2,3,4).map((_,1)).toMap |
toSeq |
转换成Seq类型 |
Seq |
Array(1,2,3,4).toSeq |
toSet |
转换成Set类型 |
Set |
Array(1,2,3,4).toSet |
toStream |
转换成Stream类型 |
Stream |
Array(1,2,3,4).toStream |
toVector |
转换成Vector类型 |
Vector |
Array(1,2,3,4).toVector |
transpose |
矩阵转置,二维数组行列转换 |
数组 |
Array(Array(1,2,3),Array(4,5,6),Array(7,8,9)).transpose |
zip |
将两个序列对应位置上的元素组成一个元组,只取两者下标相同的 |
元组数组 |
Array(1,2,3,4).zip(Array(‘a’,‘b’,‘c’,‘d’,‘e’)) |
zipAll(arr,a2,a3) |
不足的自动填充,如果前面序列短,不足的元素填充为第二个参数,如果后面短,填充为第三个参数 |
元组数组 |
Array(1,2,3,4).zipAll(Array(‘a’,‘b’,‘c’,‘d’,‘e’),1,‘a’) |
zipWithIndex |
每个元素和它的下标组成一个2元组数组 |
元组数组 |
Array(1,2,3,4,5).zipWithIndex |
unzip |
将含有二元组的数组,每个元组的第一个元素组成一个数组,第二个元素组成一个数组 |
二元组 |
Array((1,‘a’), (2,‘b’), (3,‘c’), (4,‘d’)).unzip |
unzip3 |
将含有三元组的数组,每个元组的第一个元素组成一个数组,第二个元素组成一个数组,第三个元素组成一个数组,返回包含这三个数组的三元组 |
三元组 |
Array((1,2,3),(“a”,“b”,“c”)).unzip3 |
update(i,x) |
将数组中下标i处的元素更新为x |
Unit |
val a = Array(1,2,3,4);a.update(0,0);a |
updated(i,x) |
将数组中下标i处的元素更新为 x,并返回替换后的数组 |
数组 |
Array(1,2,3,4).updated(0,0) |
view(i,j) |
返回当前序列中从i到j之间的序列,不包括j处的元素 |
IndexedSeqView |
Array(1,2,3,4).view(0,3).mkString(",") |
withFilter |
根据条件p过滤元素 |
FilterMonadic |
Array(1, 2, 3, 4).withFilter(_>2).map(x=>x) |
2.scala交互界面演示如下:
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_191).
Type in expressions for evaluation. Or try :help.
scala> Array(1 ,2,3,4,5).apply(3)
res0: Int = 4
scala> Array(1 ,2) ++ List(7,8,9)
res1: Array[Int] = Array(1, 2, 7, 8, 9)
scala> Array(1,2) union List(3,4)
res2: Array[Int] = Array(1, 2, 3, 4)
scala> Array(1,2) ++: List(3,4)
res3: List[Int] = List(1, 2, 3, 4)
scala> Array(1,2,3).diff(Array(2,4))
res4: Array[Int] = Array(1, 3)
scala> Array(1,2,3).intersect(Array(2,4))
res5: Array[Int] = Array(2)
scala> 1 +:Array(2,3)
res6: Array[Int] = Array(1, 2, 3)
scala> Array(2,3):+4
res7: Array[Int] = Array(2, 3, 4)
scala> Array(1, 2, 3, 4).fold(5)(_+_)
res8: Int = 15
scala> Array(1, 2, 3, 4).foldLeft(5)(_+_)
res9: Int = 15
scala> (5/:Array(1, 2, 3, 4))(_+_)
res10: Int = 15
scala> Array(1, 2, 3, 4).foldRight(5)(_+_)
res11: Int = 15
scala> (Array(1, 2, 3, 4):\5)(_+_)
res12: Int = 15
scala> Array(1,2,3).addString(new StringBuilder())
res13: StringBuilder = 123
scala> Array(1,2,3).addString(new StringBuilder(),",")
res14: StringBuilder = 1,2,3
scala> Array('a','b').charAt(0)
res15: Char = a
scala> Array(1,2,3).clone
res16: Array[Int] = Array(1, 2, 3)
scala> Array(1,2).collect{case x if x%2==0 => x+1}
res17: Array[Int] = Array(3)
scala> Array(1,2).collectFirst{case x if x%2==0 => x+1}
res18: Option[Int] = Some(3)
scala> Array(1,2,3).combinations(2).foreach(x=>print(x.mkString(",")+" "))
1,2 1,3 2,3
scala> Array(1,2).contains(1)
res20: Boolean = true
scala> Array(1,2,3).containsSlice(Array(2))
res21: Boolean = true
scala> val a = Array(0,0,0);Array(1,2,3).copyToArray(a,1,2)
a: Array[Int] = Array(0, 1, 2)
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val a = Array(0,0,0);Array(1,2,3).copyToArray(a,1,2)
a: Array[Int] = Array(0, 1, 2)
scala> Array(1, 2).corresponds(Array(2,4))(_<_)
res25: Boolean = true
scala> Array(1,2,3).count(_<2)
res26: Int = 1
scala> Array(1,1,2).distinct
res27: Array[Int] = Array(1, 2)
scala> Array(1,2,3).drop(2)
res28: Array[Int] = Array(3)
scala> Array(1,2,3).dropRight(2)
res29: Array[Int] = Array(1)
scala> Array(1,2,-1).dropWhile(_<2)
res30: Array[Int] = Array(2, -1)
scala> Array(1,2,3).endsWith(Array(2,3))
res31: Boolean = true
scala> Array(1,2,3).startsWith(Array(2,3),1)
res32: Boolean = true
scala> Array(1,2,3).exists(_>2)
res33: Boolean = true
scala> Array(1,2,3,1).filter(_ < 3)
res34: Array[Int] = Array(1, 2, 1)
scala> Array(1,2,3).find(_>1)
res35: Option[Int] = Some(2)
scala> Array(Array(1,2,3),Array(4,5,6)).flatten
res36: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> Array(Array(1,2),Array(4,5)).flatMap(_.map(_*2))
res37: Array[Int] = Array(2, 4, 8, 10)
scala> Array(1, 2).forall(_>0)
res38: Boolean = true
scala> Array(1,2,3).foreach(print(_))
123
scala> Array(1, 2, 3, 4).groupBy((_%2==0))
res40: scala.collection.immutable.Map[Boolean,Array[Int]] = Map(false -> Array(1, 3), true -> Array(2, 4))
scala> Array(1, 2, 3, 4).grouped(2).foreach(x=>print(x.mkString(",")))
1,23,4
scala> Stream(1).hasDefiniteSize
res42: Boolean = false
scala> Array(1,2,3).head
res43: Int = 1
scala> Array(1,2,3).headOption
res44: Option[Int] = Some(1)
scala> Array(1,1,1).indexOf(1,1)
res45: Int = 1
scala> Array(1,2,3,2,3).indexOfSlice(Array(2,3,4))
res46: Int = -1
scala> Array(1,2).indexWhere(_>0,1)
res47: Int = 1
scala> Array(1,2).last
res48: Int = 2
scala> Array(1,2).lastOption
res49: Option[Int] = Some(2)
scala> Array(1,1,1).lastIndexOf(1,1)
res50: Int = 1
scala> Array(1,2,1,2).lastIndexOfSlice(Array(1,2),1)
res51: Int = 0
scala> Array(1,2).lastIndexWhere(_>0)
res52: Int = 1
scala> Array(1,2,3).init
res53: Array[Int] = Array(1, 2)
scala> Array(1,2,3).inits.foreach(x=>print(x.mkString("[",",","]")))
[1,2,3][1,2][1][]
scala> Array(1,2,3,4).tail
res55: Array[Int] = Array(2, 3, 4)
scala> Array(1,2,3).tails.foreach(x=>print(x.mkString("[",",","]")))
[1,2,3][2,3][3][]
scala> Array(1,2).isDefinedAt(3)
res57: Boolean = false
scala> Array().isEmpty
res58: Boolean = true
scala> Array().nonEmpty
res59: Boolean = false
scala> Array(1,2).indices
res60: scala.collection.immutable.Range = Range(0, 1)
scala> Array(1,2).iterator.foreach(print(_))
12
scala> Array(1,2).iterator.isTraversableAgain
res62: Boolean = false
scala> Array(1,2).length
res63: Int = 2
scala> Array(1,2).lengthCompare(1)
res64: Int = 1
scala> Array(1,2).map(_+10)
res65: Array[Int] = Array(11, 12)
scala> Array(1,2).max
res66: Int = 2
scala> Array(1,2,3).maxBy(_>1)
res67: Int = 2
scala> Array(1,2).min
res68: Int = 1
scala> Array(1,2,0).minBy(_>1)
res69: Int = 1
scala> Array(1,2).mkString("[",",","]")
res70: String = [1,2]
scala> Array(1,2).padTo(5,0)
res71: Array[Int] = Array(1, 2, 0, 0, 0)
scala> Array(1,2).partition(_%2==0)
res72: (Array[Int], Array[Int]) = (Array(2),Array(1))
scala> Array(1,2,3,4).patch(0,Array(7,8),1)
res73: Array[Int] = Array(7, 8, 2, 3, 4)
scala> 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]
scala> Array(1, 2, 3, 4).prefixLength(_ < 3)
res75: Int = 2
scala> Array(1, 2, 3, 4.5).product
res76: Double = 27.0
scala> Array(1, 2, 3, 4).reduce(_ + _)
res77: Int = 10
scala> Array(1, 2, 3, 4).reduceLeft(_ + _)
res78: Int = 10
scala> Array(1, 2, 3, 4).reduceRight(_ + _)
res79: Int = 10
scala> Array(1, 2, 3, 4).reduceLeftOption(_ + _)
res80: Option[Int] = Some(10)
scala> Array(1, 2, 3, 4).reduceRightOption(_ + _)
res81: Option[Int] = Some(10)
scala> Array(1, 4, 3, 2).sorted.reverse
res82: Array[Int] = Array(4, 3, 2, 1)
scala> Array(1, 2, 3).reverseIterator.foreach(print)
321
scala> Array(1, 2, 3, 4).reverseMap(_*3)
res84: Array[Int] = Array(12, 9, 6, 3)
scala> Array(1, 2, 3).sameElements(Array(1, 2, 3))
res85: Boolean = true
scala> Array(1, 2, 3).scan(4)(_ + _)
res86: Array[Int] = Array(4, 5, 7, 10)
scala> Array(1, 2, 3).scanLeft(4)(_ + _)
res87: Array[Int] = Array(4, 5, 7, 10)
scala> Array(1, 2, 3).scanRight(4)(_ + _)
res88: Array[Int] = Array(10, 9, 7, 4)
scala> Array(1, 2, 4, 3).segmentLength(_<4,0)
res89: Int = 2
scala> Array(1, 2, 3, 4).seq
res90: scala.collection.mutable.IndexedSeq[Int] = WrappedArray(1, 2, 3, 4)
scala> Array(1, 2, 3, 4).size
res91: Int = 4
scala> Array(1, 2, 3, 4).slice(0,3)
res92: Array[Int] = Array(1, 2, 3)
scala> Array(1, 2, 3, 4).sliding(2,2).foreach(x=>print(x.mkString(",")+" "))
1,2 3,4
scala> Array(3, 2, 1, 4).sortBy(x=>0-x)
res94: Array[Int] = Array(4, 3, 2, 1)
scala> Array(3, 2, 1, 4).sorted
res95: Array[Int] = Array(1, 2, 3, 4)
scala> Array(1, 2, 3, 4).span(x=>x%2!=0)
res96: (Array[Int], Array[Int]) = (Array(1),Array(2, 3, 4))
scala> Array(1, 2, 3, 4).splitAt(3)
res97: (Array[Int], Array[Int]) = (Array(1, 2, 3),Array(4))
scala> Array(1, 2, 3, 4).stringPrefix
res98: String = [I
scala> Array('1','2','3','4').subSequence(0,3)
res99: CharSequence = 123
scala> Array(1, 2, 3, 4).sum
res100: Int = 10
scala> Array(1, 2, 3, 4).take(3)
res101: Array[Int] = Array(1, 2, 3)
scala> Array(1, 2, 3, 4).takeRight(3)
res102: Array[Int] = Array(2, 3, 4)
scala> Array(1, 2, 3, 1).takeWhile(_<=2)
res103: Array[Int] = Array(1, 2)
scala> List(1, 2, 3, 4).toArray
res104: Array[Int] = Array(1, 2, 3, 4)
scala> Array(1, 2, 3, 4).toBuffer
res105: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3, 4)
scala> Array(1, 2, 3, 4).toIndexedSeq
res106: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4)
scala> Array(1, 2, 3, 4).toIterable
res107: Iterable[Int] = WrappedArray(1, 2, 3, 4)
scala> Array(1, 2, 3, 4).toIterator
res108: Iterator[Int] = non-empty iterator
scala> Array(1,2,3,4).toList
res109: List[Int] = List(1, 2, 3, 4)
scala> Array(1,2,3,4).map((_,1)).toMap
res110: scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 1, 3 -> 1, 4 -> 1)
scala> Array(1,2,3,4).toSeq
res111: Seq[Int] = WrappedArray(1, 2, 3, 4)
scala> Array(1,2,3,4).toSet
res112: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 4)
scala> Array(1,2,3,4).toStream
res113: scala.collection.immutable.Stream[Int] = Stream(1, ?)
scala> Array(1,2,3,4).toVector
res114: Vector[Int] = Vector(1, 2, 3, 4)
scala> Array(Array(1,2,3),Array(4,5,6),Array(7,8,9)).transpose
res115: Array[Array[Int]] = Array(Array(1, 4, 7), Array(2, 5, 8), Array(3, 6, 9))
scala> Array(1,2,3,4).zip(Array('a','b','c','d','e'))
res116: Array[(Int, Char)] = Array((1,a), (2,b), (3,c), (4,d))
scala> Array(1,2,3,4).zipAll(Array('a','b','c','d','e'),1,'a')
res117: Array[(Int, Char)] = Array((1,a), (2,b), (3,c), (4,d), (1,e))
scala> Array(1,2,3,4,5).zipWithIndex
res118: Array[(Int, Int)] = Array((1,0), (2,1), (3,2), (4,3), (5,4))
scala> Array((1,'a'),(2,'b'),(3,'c'),(4,'d')).unzip
res119: (Array[Int], Array[Char]) = (Array(1, 2, 3, 4),Array(a, b, c, d))
scala> Array((1,2,3),("a","b","c")).unzip3
res120: (Array[Any], Array[Any], Array[Any]) = (Array(1, a),Array(2, b),Array(3, c))
scala> val a = Array(1,2,3,4);a.update(0,0);a
a: Array[Int] = Array(0, 2, 3, 4)
res121: Array[Int] = Array(0, 2, 3, 4)
scala> Array(1,2,3,4).updated(0,0)
res122: Array[Int] = Array(0, 2, 3, 4)
scala> Array(1,2,3,4).view(0,3).mkString(",")
res123: String = 1,2,3
scala> Array(1, 2, 3, 4).withFilter(_>2).map(x=>x)
res124: Array[Int] = Array(3, 4)