Join two lists with unequal length in Scala

Viewed 566

I have 2 lists:

val list_1 = List((1, 11), (2, 12), (3, 13), (4, 14))
val list_2 = List((1, 111), (2, 122), (3, 133), (4, 144), (1, 123), (2, 234))

I want to replace key in the second list as value of first list, resulting in a new list that looks like:

List ((11, 111), (12, 122), (13, 133), (14, 144), (11, 123), (12, 234))

This is my attempt:

object UniqueTest {
  def main(args: Array[String]){
     val l_1 = List((1, 11), (2, 12), (3, 13), (4, 14))
     val l_2 = List((1, 111), (2,122), (3, 133), (4, 144), (1, 123), (2, 234))
     val l_3 = l_2.map(x => (f(x._1, l_1), x._2))
     print(l_3)

  }
  def f(i: Int, list: List[(Int, Int)]): Int = {
    for(pair <- list){
      if(i == pair._1){
        return pair._2
      }
    }
    return 0
  }
}

This results in:

((11, 111), (12, 122), (13, 133), (14, 144), (11, 123), (12, 234))

Is the program above a good way to do this? Are there built-in functions in Scala to handle this need, or another way to do this manipulation?

3 Answers
Related