在SCALA的不可变集合中,当集合的长度发生变化时,会创建一个新对象让我们假设我创建了一个不可变的Map,然后执行连接。 CODE =>
object Dcoder extends App
{
var map=Map("abc"-> 1,"xyz"->2)
var change =map++Map("change of object"+>3)
}
现在我的问题是 a)新对象是否因为++ ??而被创建 b)由于我使用了IMMUTABLE COLLECTION并且Immutable集合的长度发生了变化,因此创建了新对象??
答案 0 :(得分:1)
来自++
immutable.Map.++的文档:
Adds a number of elements provided by a traversable object and returns a new collection with the added elements.
确实,它会创建一个新的集合,保留旧的map
未经修改的:
scala> var map = Map("abc" -> 1, "xyz" -> 2)
map: scala.collection.immutable.Map[String,Int] = Map(abc -> 1, xyz -> 2)
scala> var change = map ++ Map("change of object" -> 3)
change: scala.collection.immutable.Map[String,Int] = Map(abc -> 1, xyz -> 2, change of object -> 3)
scala> change
res9: scala.collection.immutable.Map[String,Int] = Map(abc -> 1, xyz -> 2, change of object -> 3)
scala> map
res10: scala.collection.immutable.Map[String,Int] = Map(abc -> 1, xyz -> 2)
您可以使用+=
来修改"您的map
同样:
scala> map += "lol" -> 3
scala> map
res12: scala.collection.immutable.Map[String,Int] = Map(abc -> 1, xyz -> 2, lol -> 3)
意识到我只是将"修改",因为这会返回另一个map
(因为它是不可变的)对象并将其分配给您的map
变量。
答案 1 :(得分:1)