开发者学堂课程【Scala 核心编程 - 进阶:集合过滤 Filter 操作】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9051
集合过滤 Filter 操作
内容介绍:
一、基本介绍
二、应用案例
三、案例演示
一、基本介绍
过滤在开发中非常常见。例如,在 Kafka 时就会用到这种过滤机制,过滤就是将一个集合交给另一个函数,该函数指定哪些数据是需要的,哪些数据是不需要的,这就是 filter。
filter:
将符合要求的数据(筛选)放置到新的集合中
二、应用案例
将 val names = List("Alice","Bob", "Nick")集合中首字母为'A'的筛选到新的集合。也就是只有 Alice 会返回到新集合中。
思考:
如果这个使用传统的方式,如何完成?
以下部分代码作为演示说明,在下面的代码逻辑中,仅仅加了一层判断,就是让 item 大于10。
d
ef map(f:Int=>Int):List[Int]={
/
/
遍历集合
f
or(item<){
if(
item>10){
//
遍历后的 item
大于1
0
l
ist2=list2:+f(item)
}
}
l
ist2
}
另一种判断方法:
在遍历时,用传入的函数来判断,传入的元素是否满足该函数的要求,如果满足则加入新集合,反之,该元素被过滤,另一种判断的写法如下
d
ef map(f:Int=>Int):List[Int]={
//遍历集合
for(item<){
//将传入的函数作为一个判断条件,如果为真, item 进入 for 循环
if(f(
item)==true){ //
此处说明该函数返回为 true
或 false
l
ist2=list2:+
item
}
}
l
ist2
}
三、案例演示
object FilterDemo01 {
def main(args : Array [ string]): unit = {
/*
选出首字母为
A
的元素
*
/
val names= List("Alice","Bob", "Nick")
val names2= names.filter(startA)
println("names=" + names)
println("names2=" + names2)
}
def startA(s
tr
:String: Boolean = {
s.startsWith("A")
}
}
运行结果为:
names
=List(Alice,Bob,Nick)
names2=List(Alice)