Merge maps by key

前端 未结 8 2145
不思量自难忘°
不思量自难忘° 2020-12-01 05:14

Say I have two maps:

val a = Map(1 -> \"one\", 2 -> \"two\", 3 -> \"three\")
val b = Map(1 -> \"un\", 2 -> \"deux\", 3 -> \"trois\")
         


        
8条回答
  •  醉酒成梦
    2020-12-01 06:06

    def merge[A,B,C,D](b : Map[A,B], c : Map[A,C])(d : (Option[B],Option[C]) => D): Map[A,D] = {
      (b.keySet ++ c.keySet).map(k => k -> d(b.get(k), c.get(k))).toMap
    }
    
    def optionSeqBiFunctionK[A]:(Option[A], Option[A]) => Seq[A] = _.toSeq ++ _.toSeq
    
    merge(a,b)(optionSeqBiFunctionK)
    
    

提交回复
热议问题