scala.List
является неизменным , что означает, что вы не можете обновить его на месте.Если вы хотите создать копию вашего Списка, которая содержит обновленное отображение, вы можете сделать следующее:
val updated = l2.updated( 2, 55 )
В scala.collection.mutable
также есть изменяемые типы упорядоченных последовательностей.типа Buffer
типов, которые больше похожи на те, которые вы хотите.Если вы попробуете следующее, у вас будет больше успеха:
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)
Редактировать: просто заметьте, что в некоторых других ответах упоминалось, что вы должны использовать «изменяемый тип списка» - это правда, но «список»в Scala это просто односвязный список, тогда как в Java он обычно используется для любой упорядоченной коллекции с произвольным доступом.Существует также DoubleLinkedList
, который больше похож на Java LinkedList
, и MutableList
, который является типом, используемым для внутренних объектов некоторых других типов.
Вообще говоря, то, что вы, вероятно, хотите в Scala, - это Buffer
для этой работы;тем более, что реализация по умолчанию - ArrayBuffer
, что довольно близко к тому же, что и ArrayList
, по умолчанию большинства людей в Java.
Если вы когда-нибудь захотите выяснить, что является ближайшим "отображением«Из интерфейса Java-коллекций с миром Scala проще всего, вероятно, просто проверить, что делает JavaConversions .В этом случае вы можете увидеть, что отображение Buffer
:
scala.collection.mutable.Buffer <=> java.util.List