如何只更改seq的一个元素?

kx1ctssn  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(450)

我有一个不变的序列。我需要从中创建一个新的seq,只改变一个元素,它的索引被提供给我。我该怎么做(我认为由于序列是不可变的,我需要使用一些函数并创建一个新的输出序列,但是我不知道如何在“map”函数中检查条件更新的索引。)谢谢

11dmarpk

11dmarpk1#

如果元素必须用某种函数进行变换 f 然后

val idx = 2 // given index to transform

mySeq.iterator.zipWithIndex.map { 
  case (e, `idx`) => f(e)
  case (e, _) => e
}.toSeq

如果只需要用另一个给定的元素替换它,那么

mySeq.updated(idx, newElement)

如果集合将经常更新,那么请考虑 Vector 而是因为 List 这是 Seq 未针对更新进行优化。

相关问题