如何使用不可变List替换索引元素.
例如
val list = 1 :: 2 ::3 :: 4 :: List()
list.replace(2, 5)
Run Code Online (Sandbox Code Playgroud)
Rex*_*err 89
如果要替换索引2,那么
list.updated(2,5) // Gives 1 :: 2 :: 5 :: 4 :: Nil
Run Code Online (Sandbox Code Playgroud)
如果你想找到每个有2的地方而不是放入5,
list.map { case 2 => 5; case x => x } // 1 :: 5 :: 3 :: 4 :: Nil
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,你并没有真正"替换",而是返回一个新的列表,该列表在那些(那些)位置具有不同的元素.
Vas*_*iuk 51
除了之前的说法,您还可以使用patch
替换序列子序列的函数:
scala> val list = List(1, 2, 3, 4)
list: List[Int] = List(1, 2, 3, 4)
scala> list.patch(2, Seq(5), 1) // replaces one element of the initial sequence
res0: List[Int] = List(1, 2, 5, 4)
scala> list.patch(2, Seq(5), 2) // replaces two elements of the initial sequence
res1: List[Int] = List(1, 2, 5)
scala> list.patch(2, Seq(5), 0) // adds a new element
res2: List[Int] = List(1, 2, 5, 3, 4)
Run Code Online (Sandbox Code Playgroud)
你可以使用list.updated(2,5)
(这是一种方法Seq
).
scala.collection.immutable.Vector
为了这个目的,使用a可能更好,因为Vector
采取(我认为)恒定时间的更新.
归档时间: |
|
查看次数: |
52134 次 |
最近记录: |