摘要:本文基于 Programming Scala 2nd 介绍一下容器的相关操作
遍历 foreach
这里给出两个例子,分别是遍历列表和 Map
1 | // 遍历列表 |
映射 map
我们之前已经接触过 map 方法, map 方法返回一个与原集合类型大小相同的新集合,其中的每个元素均由原集合的对应元素转换得到。
下面给出具体使用案例:
1 | val stateCapitals = Map( |
扁平映射 flatmap
flatMap 是 Map 操作的一种推广。在 flatMap 中,我们对原始集合中的每个元素,都分别产生零或多个元素。我们传入一个函数,该函数对每个输入返回一个集合,而不是一个元素。然后 flatMap 把生成的多个集合“压扁”为一个集合。
1 | val list = List("now", "is", "", "the", "time") |
过滤 fitler
遍历一个集合,然后抽取其中满足特定条件的元素,组成一个新的集合
1 | val stateCapitals = Map( |
用于完成集合的过滤作用或者返回原始集合中的一部分元素。一些方法在输入无限集合时不会返回;一些方法在输入同一个集合时,除非集合的遍历顺序固定,否则多次运行的情况下会产生不同的输出。也就是说并不是只有 filter 能实现过滤的目标。
1 | • def drop (n : Int) : TraversableLike.Repr |
折叠与归约
我们把折叠和归约放在一起讨论是因为两者很相似。它们都是将一个集合“缩小”成一个更小的集合或一个值的操作。
折叠从一个初始的“种子”值开始,然后以该值作为上下文,处理集合中的每个元素。不同的是,归约不需要调用者提供一个初始值。它将集合的其中一个元素当做初始值,通常这个值是集合的第一个元素或最后一个元素
1 | List(1,2,3,4,5,6) reduce (_ + _) |