我正在尝试通过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)
答案 0 :(得分:1)
您的命名选择有点令人困惑。我试图让它更清晰但如果id
是String
,则不清楚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