One way is map over your headers along with the index of each entry and get the col for the same index and create a map.
Given,
scala> val headers = Seq("h1", "h2", "h3", "h4")
headers: Seq[String] = List(h1, h2, h3, h4)
scala> val cols = Seq("c1", "c2", "c3")
cols: Seq[String] = List(c1, c2, c3)
map on headers cols.lift(i) is safe way when headers.size > cols.size
scala> headers.zipWithIndex.map{case (h, i) => h -> cols.lift(i).getOrElse("")}.toMap
res50: scala.collection.immutable.Map[String,String] = Map(h1 -> c1, h2 -> c2, h3 -> c3, h4 -> "")
If headers.size == cols.size or if you don't want header which does not have equvalent col, you can use list.zip(anotherList),
scala> headers.zip(cols)
res52: Seq[(String, String)] = List((h1,c1), (h2,c2), (h3,c3))
iandjalways have the same value, haven't they? So why don't useiinstead ofj? If your real code is more complicated - show us some better example.