一、partition、find、takeWhile、dropWhile实战
println(List(1,2,3,4,5) partition(_ % 2 == 0)) //把List分成两部分,偶数\奇数各一部分
println(List(1,2,3,4,5) find(_ % 2 == 0)) //找出List集合中第一个满足条件的元素,注意是第一个
println(List(1,2,3,4,5) find(_ <= 0))
println(List(1,2,3,4,5) takeWhile(_ < 4)) //获取符合条件的元素
println(List(1,2,3,4,5) dropWhile(_ < 4)) //去掉符合条件的元素
println(List(1,2,3,4,5) span(_ < 4)) //同partition,只是效率稍高
输出:
(List(2, 4),List(1, 3, 5))
Some(2)
None
List(1, 2, 3)
List(4, 5)
(List(1, 2, 3),List(4, 5))
二、span、forall、exists实战
计算一个矩阵中是否存在一行所有元素都为0的情况
def hastotallyZeroRow(m : List[List[Int]] ) = m exists (row => row forall ( _ == 0))
//forall:List中所有元素都满足forall参数的条件,才会返回true;否则返回false
//exists:只要存在一个元素满足函数,就返回true;否则返回false
val m = List(List(1,0,0), List(0,1,0), List(0,0,0))
println(hastotallyZeroRow(m))
输出:true参考资料来源于大数据梦工厂 深入浅出scala 第36讲 由王家林老师讲解