Scala有一个非常大的集合。集合就像容纳一些线性数值集合的容器,我们应用一些操作,如filter、map、flatMap和用于理解的集合,并在一个新的集合中操作它们。
筛选
选择集合中满足一个谓词的所有元素。
def filter(p:A=>boolean):List[A]
- 参数:p- 用于测试元素
- 返回。一个新的集合,由这个集合中满足给定谓词p的所有元素组成,元素的顺序被保留下来。
例子
val numList = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val evenNumList = numList.filter(n => n % 2 == 0)
print(evenNumList)
输出
List(2, 4, 6, 8, 10)
地图
通过对集合中的所有元素应用一个函数来建立一个新的集合。
def map(f: A => B): List[B]
- 参数:f-函数应用于每个元素。
- 类型参数。B-返回集合的元素类型。
- 返回:将给定的函数f应用于集合中的每个元素而得到的新集合,以及结果的集合。
例子
val list = List(1,2,3,4)
val AddOneInEachElement = list.map(n=>n+1)
print(AddOneInEachElement)
输出
List(2, 3, 4, 5)
flatMap
通过对集合中的所有元素应用一个函数建立一个新的集合,并使用结果集合中的元素。
def flatMap(f: A => IterableOnce[B]): List[B]
- 参数:f-要应用到每个元素的函数。
- 类型参数。B- 返回集合中的元素类型。
- 返回。一个新的集合,该集合由给定的集合值函数f应用于集合中的每个元素,并将结果串联起来。
例子
val num = List(1, 2)
val char = List('a', 'b')
println(num.flatMap(x => char.map(y => s"$x$y")))
输出
List(1a, 1b, 2a, 2b)
对于理解力
Comprehension是Scala中的一个构造,它允许我们评估某些表达式。For Comprehension的形式是for (enumerators) yield e,其中enumerators是指一个分号分隔的枚举器列表。
枚举器可以是一个迭代列表的生成器,也可以是一个过滤器。Comprehension为枚举器生成的每个结果评估主体e,并返回这些值的列表。
例子
val num = List(1, 2)
val char = List('a', 'b')
val combination = for{
n<-num
c<-char
}yield s"$n$c"
print(combination)
输出
List(1a, 1b, 2a, 2b)
总结
通过这篇文章,你将获得关于过滤器、地图、理解和flatMap的基本知识,它也为我们提供了更简洁和可读的代码。