我有两个ArrayList(List [String]),例如:
ArrayList1: ArrayList1:
List(a, b, c) List(1, 2, 3)
List(d, e, f) List(4, 5, 6)
List(g,h, i) List(7,8, 9)
我想使用scala并行加入,比如这样做
val ArrayList12 = ArrayList1 ++ ArrayList2
但这不是我想要的,因为ArrayList2在ArrayList1的末尾添加了
请帮助我使用scala以这种形式进行并行连接:
List(a, b, c,1,2,3)
List(d, e, f,4,5,6)
List(g,h,i,7,8,9)
答案 0 :(得分:2)
您可以使用zip。
val arrayList12 = arrayList1.zip(arrayList2).map(tuple => tuple._1 ++ tuple._2)
zip
返回一个List,它将第一个和第二个列表的每个元素组合成Tuple2
,结果类型为Seq[(List[A],List[Int])]
。
然后我们可以将该列表映射到具有map
的平面结构,以连接元组中的两个列表。
答案 1 :(得分:1)
试试这个:
scala> List(List("a","b","c"), List("d", "e", "f"))
res1: List[List[String]] = List(List(a, b, c), List(d, e, f))
scala> List(List(1,2,3),List(4,5,6))
res2: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6))
scala> res1.zip(res2)
res3: List[(List[String], List[Int])] = List((List(a, b, c),List(1, 2, 3)), (List(d, e, f),List(4, 5, 6)))
给出List
个元组。然后你可以map()
跨越这些,添加每个元组的两个元素:
scala> res1.zip(res2).map(x => x._1 ++ x._2)
res5: List[List[Any]] = List(List(a, b, c, 1, 2, 3), List(d, e, f, 4, 5, 6))
答案 2 :(得分:0)
另一种剥皮方式:
val arrayList1 = List(List("a","b","c"), List("d", "e", "f"), List("g","h", "i"))
val arrayList2 =List(List("1","2","3"), List("4", "5", "6"), List("7", "8", "9"))
List(arrayList1, arrayList2).transpose.map(_.flatten)
// List(List(a, b, c, 1, 2, 3), List(d, e, f, 4, 5, 6), List(g, h, i, 7, 8, 9))
但如果我是真的这样做,我会使用Brian Agnew的回答