这篇博客按Scala方法不同的实现功能进行汇总,含案例方便记忆
主要分为十一大类:
提取、修改、迭代处理、分段|分组、聚合、验证、
容量、转变、顺序(排序)、字符串拼接、查找(根据值取下标)
提取
foreach
遍历序列中所有元素
val arr:Array[Int] =Array(1,2,3,4,1)
arr.foreach(println)
//结果
1
2
3
4
1
apply
根据下标提取指定元素,存在下标越界异常
var arr1=Array(2,4,7,3,9)
println(arr1.apply(2))
//结果
7
applyOrElse
根据下标提取,若下标越界默认返回参数2函数的返回值
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
println(array.applyOrElse(1,(i:Int)=> i*2))
//结果
2
//越界:
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
println(array.applyOrElse(10,(i:Int)=> i*2))
//结果
20
head
提取头元素,空数据报异常
println(Array(1, 2, 3, 4).head)
//结果
Some(4)
headOption
提取头元素,配合isEmpty判定,安全提取
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
val head = array.headOption
if (head.isEmpty){
println("empty")
}else{
println(head.get)
}
//结果
1
last
提取尾元素,空数据报异常
println(Array(1, 2, 3, 4).last)
//结果
4
lastOption
提取尾元素,配合isEmpty判定,安全提取
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
val last = array.lastOption
if (last.isEmpty){
println("empty")
}else{
println(last.get)
}
//结果
9
take
从左边提取元素,返回新的数组
val arr:Array[Int] =Array(1,2,3,4,1)
println(arr.take(3).mkString(","))
println(arr.take(4).mkString(","))
//结果
1,2,3
1,2,3,4
takeRight
从右边提取元素,返回新的数组
val arr:Array[Int] =Array(1,2,3,4,1)
println(arr.takeRight(2).mkString(","))
println(arr.takeRight(4).mkString(","))
//结果
4,1
2,3,4,1
takeWhile
从左边提取满足predicate条件的元素
从下标0开始提取,若第一个元素不满足直接返回空数组,否则从第一个满足开始,到第一个不满足结束
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.takeWhile((a:Int) => a>5).foreach(print)
//结果
空数组
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.takeWhile((a:Int) => a>0).foreach(print)
//结果
1 2 3 4 5 6 7 8 9
filter
提取满足参数函数条件的元素
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.filter((a:Int)=> a%2==1).foreach(print)
//结果
13579
filterNot
提取不满足参数函数条件的元素
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.filterNot((a:Int)=> a%2==1).foreach(print)
//结果
2468
collect
执行一个并行计算(偏函数),得到一个新的数组对象(通过偏函数对某些元素进行操作)
val p : PartialFunction[Int,Int]=(a:Int)=> a match {
case x if(x%2==1)=> x
}
array.collect(p).foreach(println)
println("-------------")
array.collect({
case x if(x%2==0) => x
}).foreach(println)
//结果
1 3 5 7 9
2 4 6 8
collectFirst
找到第一个符合偏函数定义的元素
array.collectFirst({
case x if(x%2==0) => x
}).foreach(println)
//结果
2
find
提取左一满足参数条件的元素(处理,性能高,类似takeWhile)
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.find((a:Int)=>a>3).foreach(print)
//结果
4
slice
提取一个区间内的元素
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
val sub:Array[Int] = array.slice(2, 4)
sub.foreach(println)
//结果
3 4
init
提取排除最后一个元素之外的所有元素
val arr1 = Array(1, 2, 3, 5, 1, 2)
val init: Array[Int] = arr1.init
init.foreach(println)
//结果
1
2
3
5
1
inits
递归依次提取排除最后一个元素之外的所有元素
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.inits.foreach(a=>println(a.mkString(",")))
//结果
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8
1,2,3,4,5,6,7
1,2,3,4,5,6
1,2,3,4,5
1,2,3,4
1,2,3
1,2
1
tail
提取排除第一个元素之外的所有元素
val arr1 = Array(1, 2, 3, 5, 1, 2)
arr1.tail.foreach(println)
//结果
2
3
5
1
2
tails
递归依次提取排除第一个元素之外的所有元素
val array : Array[Int] = Array(1,2,3,4,5,6,7,8,9)
array.inits.foreach(a=>println(a.mkString(",")))
//结果
1,2,3,4,5,6,7,8,9
2,3,4,5,6,7,8,9
3,4,5,6,7,8,9
4,5,6,7,8,9
5,6,7,8,9
6,7,8,9
7,8,9
8,9
9
lift
给序列的索引,返回该索引处的