scala数组集合函数大全

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)

猜你喜欢

转载自blog.csdn.net/sun_0128/article/details/107495052
今日推荐