scala - 固定列表元素以定位在 Scala 中的合并列表中

标签 scala collections

这似乎是一个简单的场景,但我对如何优雅地/功能性地解决它感到困惑。我有两个列表 val pinnedStrings: Seq[(String, Int)]val fillerString: Seq[Int]。我想合并它们,但每个固定的字符串都保证在输出列表中的配对位置。所以如果我有:

val pinnedStrings = Seq("apple" -> 1, "banana" -> 4, "cherry" -> 6)
val fillerStrings = Seq("alpha", "bravo", "charlie", "delta", "echo", "foxtrot") 

那么输出应该是:

Seq("alpha", "apple", "bravo", "charlie", "banana", "delta", "cherry", "echo", "foxtrot")

假设如果没有足够的填充符到达固定字符串,我们将丢弃固定字符串。 (或者如果将所有剩余的固定字符串放在最后更简单,那也很好。)

最佳答案

或者:

scala> val pinnedStrings = Seq("apple" -> 1, "banana" -> 4, "cherry" -> 6) 
pinnedStrings: Seq[(String, Int)] = List((apple,1), (banana,4), (cherry,6))

scala> val fillerStrings = Seq("alpha", "bravo", "charlie", "delta", "echo", "foxtrot")
fillerStrings: Seq[String] = List(alpha, bravo, charlie, delta, echo, foxtrot)

scala> (fillerStrings /: pinnedStrings) { case (acc, (s, i)) => ((acc take i) :+ s) ++ (acc drop i) }
res0: Seq[String] = List(alpha, apple, bravo, charlie, banana, delta, cherry, echo, foxtrot)

关于scala - 固定列表元素以定位在 Scala 中的合并列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25882433/

相关文章:

java - 如何查找 MultivaluedMap 中键的长度/大小?

php - 如何通过 asc 和 desc 的多个属性对 Laravel 集合进行排序?

scala - Play Framework 2 仅在第一次请求时重新编译

scala - Spark Scala 之外的更好替代方案

java - 使用 Java 中的序列化将对象保存到文件

collections - groovy:更改列表的每个元素并加入

scala - Scala,Actor,未读收件箱邮件会如何处理?

node.js - 如何在 Scala.js 中使用 Node 模块

java - IS NULL 条件下的 JDBC 错误

Java集合查询