Scala中有很多实现不同过滤需求的方法,与过滤操作相关的几个常用函数还包括exists和find。
其中,exists方法判断是否存在满足给定条件的元素,find方法返回第一个满足条件的元素。
filter
最典型的是filter方法,它接受一个返回布尔值的函数f作为参数,并将f作用到每个元素上,将f返回真值的元素组成一个新容器返回。
@Test
def testFilter(): Unit ={
/**
* 测试filter与filterNot
*/
val list=List("张大川", "李二狗", "王三顺", "邓老五")
val newList=list.filter(_.contains("张"))
newList.map(println)
println(list exists(_.contains("张")))
println(list find(_.contains("张")))
}
输出结果
张大川
true
Some(张大川)
filterNot
与filter相反的一个过滤方法是filterNot,从字面意义就可以推测,它的作用是将不符合条件的元素返回。
@Test
def testFilterNot(): Unit ={
/**
* 测试filter与filterNot
*/
val list=List("张大川", "李二狗", "王三顺", "邓老五")
val newList=list.filterNot(_.contains("张"))
newList.map(println)
}
输出结果
李二狗
王三顺
邓老五