设置扩展功能1
收集在动作在动作
m.collect { case (k, v) if s(k.split("_")(1)) => k -> v }
筛选
m.filterKeys(key => s(key.split("_")(1)))
滤波器在动作
m.filter { case (k, _) => s(k.split("_")(1)) }
说明
Set
延伸Function1
,并且set实例可以直接应用于一个密钥以检查它是否存在于该集合中。
scala> val s = Set("blue", "orange")
s: scala.collection.immutable.Set[String] = Set(blue, orange)
scala> s("blue")
res0: Boolean = true
scala> s("apple")
res1: Boolean = false
scala> val s = Set("blue", "orange")
s: scala.collection.immutable.Set[String] = Set(blue, orange)
scala> val m = Map("product_orange_123" -> 1, "prodoct_blue_123" -> 2, "product_green_123" -> 5, "product_blue_887" -> 7)
m: scala.collection.immutable.Map[String,Int] = Map(product_orange_123 -> 1, prodoct_blue_123 -> 2, product_green_123 -> 5, product_blue_887 -> 7)
scala> m.collect { case (k, v) if s(k.split("_")(1)) => k -> v }
res2: scala.collection.immutable.Map[String,Int] = Map(product_orange_123 -> 1, prodoct_blue_123 -> 2, product_blue_887 -> 7)
scala> m.filterKeys(key => s(key.split("_")(1)))
res3: scala.collection.immutable.Map[String,Int] = Map(product_orange_123 -> 1, prodoct_blue_123 -> 2, product_blue_887 -> 7)
scala> m.filter { case (k, _) => s(k.split("_")(1)) }
res4: scala.collection.immutable.Map[String,Int] = Map(product_orange_123 -> 1, prodoct_blue_123 -> 2, product_blue_887 -> 7)
可以请您分享预期的输出。 – kapiltekwani
你甚至可以编译'val m = Map(“product_orange_123”,“prodoct_blue_123”,“product_green_123”,“product_blue_887”)'?地图具有类型'Map [Key,Value]'。 – ipoteka
@ipoteka修好了抱歉。 –