by shigemk2

当面は技術的なことしか書かない

Scala Mapで指定した名前のキーとその値を除外する

こういうのがあったとして

scala> val map = Map("id" -> 1, "date" -> "2015/11/01", "name" -> "Leprechaun", "weight" -> "9", "name2" -> "LOB")
map: scala.collection.immutable.Map[String,Any] = Map(weight -> 9, name -> Leprechaun, name2 -> LOB, id -> 1, date -> 2015/11/01)

キーの名前id date name以外のものだけ残したい。完成品のイメージ。

Map(weight -> 9, name2 -> LOB)

除外したい名前のリストなどを用意して、filterKeysとcontainsの合わせ技で除外するのが良いかと。

scala> val keys = Set("id", "date", "name")
keys: scala.collection.immutable.Set[String] = Set(id, date, name)
scala> map.filterKeys(!keys.contains(_))
res4: scala.collection.immutable.Map[String,Any] = Map(weight -> 9, name2 -> LOB)