ast*_*y13 40 collections containers scala scala-collections
我是Scala的新手,我正在尝试理解集合层次结构.我看到有"可变"和"一成不变"的集合之间的区别,但我不明白这是什么,其实就是在执行层面,以及如何这涉及到val和var.有人能给我一些见解吗?此外,每个集合类都有"可变"版本和"不可变"版本,还是有些类只能是"可变"或"不可变"?
Fre*_*Foo 61
Mutable意味着您可以就地更改集合.因此,如果你有一个集合c并且你附加了一个元素+=,那么c就已经改变了,所以对该集合的所有其他引用都是如此.
不可变意味着集合对象永远不会改变; 相反,您使用诸如+或之类的操作构建新的集合对象,这些操作++将返回一个新集合.这在并发算法中很有用,因为它不需要锁定来向集合添加内容.它可能以一些开销为代价,但这个属性非常有用.Scala的不可变集合是完全持久的数据结构.
所不同的是非常相似之间var和val,但请不要忘记:
val就地的可变集合,但不能重新分配valvar,则可以var通过诸如此类的操作将其重新分配给由其构建的集合+.并非所有集合都必然存在于可变和不可变的变体中; 我最后一次检查时,只支持可变优先级队列.
不可改变意味着不可改变.val使引用不可更改,这意味着val一旦初始化,您就无法为其赋值.不可变集合使集合本身不可更改而不是对它的引用.每次修改不可变集合时,都会生成另一个集合,而不是就地修改原始集合.大多数集合都有不可变版本和可变版本,但当然也有例外.
| 归档时间: |
|
| 查看次数: |
14474 次 |
| 最近记录: |