scala - 如何根据某种方法的结果收集集合中的元素?

标签 scala scala-collections

假设我们有一个按照某种顺序排序的值列表。我们还有一个映射到这些值的元素映射。我们希望按照元素在列表中的键的相同顺序从 map 中获取元素的集合。一个简单的方法是:

val order = Seq("a", "b", "c")
val map = Map("a" -> "aaa", "c" -> "ccc")

val elems = order.map(map.get(_)).filter(_.isDefined).map(_.get)

但是程序需要遍历集合 3 次。是否可以更有效地实现此功能?特别是,是否可以使用 collect 方法来做到这一点?

最佳答案

好吧,标准的 Scala 映射也是一个 PartialFunction,因此您可以使用“collect”。

val elems = order.collect(map)

关于scala - 如何根据某种方法的结果收集集合中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6215366/

相关文章:

scala - 可变映射中的不可变映射支持可变操作

scala - 你如何使用 scalamock 来模拟带有构造函数参数的类

Scala 最佳实践 : mapping 2D data

Scala 映射与 Either

Scala:转换一个集合,每次迭代产生 0..many 元素

scala - 基于级联的烫伤(旧版本)计数器

scala - 等号和类型不匹配

scala - `synchronized` 使用方式不同

Scala 编译器错误 : assertion failed: scala. <无>

Scala : creating directory and file