假设我们有一个按照某种顺序排序的值列表。我们也有映射到这些值的元素映射。我们希望以与键列表中列出的键相同的顺序从地图中获取元素集合。一个简单的方法是:如何根据某种方法的结果收集一个集合的元素?
val order = Seq("a", "b", "c")
val map = Map("a" -> "aaa", "c" -> "ccc")
val elems = order.map(map.get(_)).filter(_.isDefined).map(_.get)
但是,程序需要迭代集合三次。是否有可能更高效地实现此功能?特别是用收集方法可以做到这一点吗?
isDefined仅仅是一个示例。我想用各种方法进行过滤。换句话说,我正在寻找一种通过单次迭代进行映射与过滤的方法。 – 2011-06-02 13:49:40