对于以下场景,最好的 Scala 集合(在 2.8+ 中)是可变的还是不可变的:
- 按顺序排列,所以我可以按位置访问项目(a Seq)
- 需要频繁插入项目,所以集合必须能够增长而不会受到太多惩罚
- 随机访问,经常需要在集合中的任意索引处删除和插入项目
目前我似乎使用可变 ArrayBuffer 获得了良好的性能,但还有什么更好的吗?是否有一个不变的替代方案也可以?提前致谢。
对于以下场景,最好的 Scala 集合(在 2.8+ 中)是可变的还是不可变的:
目前我似乎使用可变 ArrayBuffer 获得了良好的性能,但还有什么更好的吗?是否有一个不变的替代方案也可以?提前致谢。
可变的:ArrayBuffer
不可变的:Vector
如果您在随机位置插入项目超过访问它们的时间的 log(N)/N,那么您可能应该使用immutable.TreeSet
,因为所有操作都是 O(log(N))。如果您主要进行访问或添加到(远)端,ArrayBuffer
并且Vector
工作良好。
Vector
. IndSeq
来自scalaz的应该会更好。