マップのサブセットを取得するにはどうすればよいですか?
私たちが持っていると仮定します
val m: Map[Int, String] = ...
val k: List[Int]
のすべてのキーがk
存在する場所m
。
m
ここで、キーがリストにあるペアのみを含むMap のサブセクトを取得したいと思いますk
。
のようなものm.intersect(k)
ですがintersect
、マップ上では定義されていません。
1 つの方法は、 : を使用することfilterKeys
ですm.filterKeys(k.contains)
。ただし、元のマップのキーごとにリスト内の検索を実行する必要があるため、これは少し遅くなる可能性があります。
私が考えることができる別の方法は、ですk.map(l => (l, m(l)).toMap
。ここでは、本当に関心のあるキーを反復処理するだけで、検索は行いません。
より良い(組み込みの)方法はありますか?