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

EasonJim 阅读:31 2024-10-25 08:56:14 评论:0

这似乎是一个简单的场景,但我对如何优雅地/功能性地解决它感到困惑。我有两个列表 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
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号