Как указывает Томас, представление только для чтения - O (1). Но только чтение не означает неизменность.
Разница хорошо описана в статье " Fighting Bit Rot * ":
Все классы коллекции хранятся в
пакет scala.collection. Этот пакет
имеет три подпакета: изменяемый,
неизменный и общий. Наиболее
коллекции существуют в трех формах,
в зависимости от их изменчивости.
Коллекция в упаковке
scala.collection.immutable is
гарантированно будет неизменным для
каждый. Это означает, что можно положиться на
тот факт, что доступ к тому же
стоимость коллекции со временем всегда будет
собрать коллекцию с тем же
элементы. Коллекция в упаковке
scala.collection.mutable известен
есть некоторые операции, которые меняют
коллекция на месте.
Коллекция в упаковке
scala.collection может быть изменяемой
или неизменный. Например,
collection.Seq [T] является суперклассом
оба collection.immutable.Seq [T] и
collection.mutable.Seq [Т]. В общем-то,
корневые коллекции в пакете scala.
Коллекция определяет тот же интерфейс
как неизменные коллекции, и
изменяемые коллекции в упаковке
scala.collection.mutable обычно добавляют
некоторая деструктивная модификация
операции к этому неизменному
интерфейс. разница между
корневые коллекции и неизменные
Коллекции в том, что пользователь
неизменная коллекция имеет гарантию
что никто не может изменить коллекцию,
тогда как пользователи корневых коллекций имеют
предполагать изменения, сделанные другими,
даже если они не могут сделать
сами модификации.
Возможно, это просто, как повышение.
scala> val mm = collection.mutable.Map(1 -> 2)
mm: scala.collection.mutable.Map[Int,Int] = Map(1 -> 2)
scala> val readOnly = mm : collection.Map[Int, Int]
readOnly: scala.collection.Map[Int,Int] = Map(1 -> 2)