Seq用于快速随机访问和Scala中的快速增长

时间:2010-08-21 06:09:46

标签: scala scala-collections

对于以下场景,最佳Scala集合(2.8+以上),可变或不可变的是什么:

  • 按顺序排序,所以我可以按位置(Seq)
  • 访问项目
  • 需要经常插入物品,因此集合必须能够在没有太多损失的情况下成长
  • 随机访问,经常需要删除和插入集合中任意索引的项目

目前我似乎在使用可变的ArrayBuffer获得了良好的性能,但有什么更好的吗?是否有一个不可改变的替代品也会这样做?提前谢谢。

3 个答案:

答案 0 :(得分:4)

可变:ArrayBuffer
不可变:Vector

答案 1 :(得分:4)

如果您在随机位置插入项目超过访问它们的时间的log(N)/ N,那么您应该使用immutable.TreeSet,因为所有操作都是O(log(N))。如果您主要访问或添加到(远)端,ArrayBufferVector效果很好。

答案 2 :(得分:2)

Vector。来自scalazIndSeq应该会更好。