scala - 组合任意长度的多个列表

标签 scala scala-collections

我正在寻找一种以下列方式加入多个列表的方法:

ListA a b c
ListB 1 2 3 4
ListC + # * § %
..
..
..

Resulting List: a 1 + b 2 # c 3 * 4 § %

In Words:按顺序排列的元素,从第一个列表开始合并到结果列表中。任意数量的输入列表的长度可能会有所不同。

我使用了多种带有 zip 变体、滑动迭代器的方法,但都没有奏效,尤其是处理不同的列表长度。 Scala 中必须有一种优雅的方式;)

最佳答案

val lists = List(ListA, ListB, ListC)

lists.flatMap(_.zipWithIndex).sortBy(_._2).map(_._1)

这是不言自明的。它只是将每个值与其在各自列表中的位置一起压缩,按索引排序,然后将值拉回来。

关于scala - 组合任意长度的多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097078/

相关文章:

scala - 如果我在 Spark 作业中使用 Scala 并行集合会怎样?

scala - 以ORC格式保存spark rdd

scala - F# 是否有相当于 Scala 的 Promise 的工具?

Scala 集合 : Is there a safe map operation?

scala - 为什么 Map 操作后 Range 会转换为 Vector?

python - Scala 嵌套列表

scala - 抽象函数的可变参数数量

scala - 为什么 += 不适用于列表?

Scala 2.8 突破

scala - 如何创建 sbt 任务来生成代码,然后将这些生成的托管源包含在我的根项目中?