scala.List
es inmutable, lo que significa que no puede actualizarlo en su lugar. Si desea crear una copia de su lista que contiene la cartografía actualizada, puede hacer lo siguiente:
val updated = l2.updated(2, 55)
Hay mutables tipos de secuencias ordenadas, así, en scala.collection.mutable
, como Buffer
tipos que parecen más como lo que quieres Si intenta lo siguiente que debe tener más éxito:
scala> import scala.collection._
import scala.collection._
scala> val b = mutable.Buffer(1,2,3)
b: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)
scala> b(2) = 55
scala> b
res1: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 55)
Editar: Sólo tener en cuenta que algunas otras respuestas han mencionado que se debe utilizar un "tipo Lista mutable" - esto es cierto, pero la "Lista" en la Scala solo se refiere a la lista de enlaces únicos, mientras que en Java generalmente se usa para cualquier colección ordenada de acceso aleatorio. También hay un DoubleLinkedList
, que se parece más a un Java LinkedList
, y un MutableList
, que es un tipo utilizado para las partes internas de algunos otros tipos.
En general, lo que probablemente desee en Scala es un Buffer
para este trabajo; sobre todo porque la implementación predeterminada es ArrayBuffer
, que está muy cerca de ser lo mismo que ArrayList
, la mayoría de las personas está predeterminado en Java.
Si alguna vez quiere saber cuál es el "mapeo" más cercano de una interfaz de colecciones de Java para el mundo de Scala, lo más fácil es comprobar qué hace JavaConversions. En este caso se puede ver el mapeo es Buffer
:
scala.collection.mutable.Buffer <=> java.util.List
esto servirá, gracias val updated = l2.actualizado (2, 55) – Ska