20 lines
655 B
Scala
20 lines
655 B
Scala
def join[Type](left: Seq[Seq[Type]], right: Seq[Seq[Type]]) = {
|
|
val hash = right.groupBy(_.head) withDefaultValue Seq()
|
|
left.flatMap(cols => hash(cols.last).map(cols ++ _.tail))
|
|
}
|
|
|
|
// Example:
|
|
|
|
val table1 = List(List("27", "Jonah"),
|
|
List("18", "Alan"),
|
|
List("28", "Glory"),
|
|
List("18", "Popeye"),
|
|
List("28", "Alan"))
|
|
val table2 = List(List("Jonah", "Whales"),
|
|
List("Jonah", "Spiders"),
|
|
List("Alan", "Ghosts"),
|
|
List("Alan", "Zombies"),
|
|
List("Glory", "Buffy"))
|
|
|
|
println(join(table1, table2) mkString "\n")
|