如何最好通过Scala中的Map [String,Int]过滤Seq [Object]?

时间:2017-02-23 17:37:05

标签: scala data-structures

我正在尝试通过a过滤包含对象的Seq [Object] Map [objectid:String,Int],其中Object.id是Map中的键。

我想返回一个新的Map,其中只包含id在原始地图中的对象及其Int值。所以函数应该返回Map [Object,Int]

这是我到目前为止的情况?实现这一目标的最佳方法是什么?

val peopleObjects[Person] = Seq[person1, person2, person3]

val peopleMap[String, Int] = Map[PersonId, Int]

peopleObjects.filter(person[Person] => peopleMap.contains)

1 个答案:

答案 0 :(得分:1)

您的命名选择有点令人困惑。我试图让它更清晰但如果idString,则不清楚Int代表什么。

class Person(val id: String) {}
val (tom, jan) = (new Person("tom"), new Person("jan"))
val persons = Seq[Person](tom, jan)

val idMap = Map[String, Int]("tom"->4, "jan"->2)

val personMap = persons.filter(p => idMap.contains(p.id))
                       .map(p => p->idMap(p.id))
                       .toMap
personMap(jan)  // res0: Int = 2