scala 在现有数组的特定位置插入元素

kx7yvsdv  于 2023-04-06  发布在  Scala
关注(0)|答案(1)|浏览(125)

我有一个列表和Map如下,

val exampleList = List("A","B","C","D","E","A","L","M","N")
 val exampleMap = Map("W1" -> Vector(4,8),
                      "W2"  -> Vector(5),
                      "W3" -> Vector(9))

因此,我需要根据exampleMap中的值(应该在exampleList中出现的索引)将exampleMap中的所有字母添加到exampleList中。
我尝试了几种方法使用foldLeft以及使用flatMap,但仍然没有得到任何运气。

eyh26e7m

eyh26e7m1#

我做了两个假设
1.不会有任何重复。例如:“W 4”-〉向量⑷。
1.最多一个值将被放置在尺寸之外。
为了解决这个问题,我首先将exampleMap修改如下:

//Map(4 -> W1, 8 -> W1, 5 -> W2, 9 -> W3)
val modifiedExampleMap = exampleMap.flatMap { case (k, v) =>
  v.map(_ -> k)
}

然后用它来创建最终列表。

exampleList.view.zipWithIndex.foldLeft(List.empty[String]) {
  case (acc, (elem, index)) =>
    modifiedExampleMap.get(index + 1) match {
      case Some(value) => value :: elem :: acc
      case None => elem :: acc
    }
}.reverse

相关问题