假设我们有一个按照某种顺序排序的值列表。我们还有一个映射到这些值的元素映射。我们希望按照元素在列表中的键的相同顺序从 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/