Scala Array的方法

方法名 描 述 返回值类型 举例 结果
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
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐