如何获取地图的子集?
假设我们有
val m: Map[Int, String] = ...
val k: List[Int]
其中所有键都k
存在于m
.
现在我想获得 Map 的一个子部分,m
其中只有 key 在 list 中的对k
。
类似的东西m.intersect(k)
,但intersect
没有在地图上定义。
一种方法是使用filterKeys
: m.filterKeys(k.contains)
。但这可能有点慢,因为对于原始映射中的每个键,都必须在列表中进行搜索。
我能想到的另一种方法是k.map(l => (l, m(l)).toMap
。这里只是遍历我们真正感兴趣的键而不进行搜索。
有更好的(内置)方式吗?