2010-08-21 2 views
4

Что будет лучшая коллекция Scala (в), 2.8 и изменяемый или неизменного, по следующему сценарию:Seq для быстрого случайного доступа и быстрого роста в Scala

  • Последовательная упорядоченным, так что я могу получить доступ к детали положение (Seq)
  • нужно вставить элементы часто, так что коллекция должна быть в состоянии расти без слишком большого штрафа
  • случайного доступа, часто необходимо удалять и вставлять элементы в произвольных индексах в коллекции

В настоящее время я, кажется, получаю хорошую производительность с изменяемым ArrayBuffer, но есть ли что-нибудь лучше? Есть ли непреложная альтернатива, которая будет делать? Заранее спасибо.

+2

Возможно, вы захотите пройти эту отличную коллекцию документов API от Martin Odersky и Lex Spoon: http://lampwww.epfl.ch/~odersky/whatsnew/collections-api/collections.html – missingfaktor

+0

Спасибо - я пропустил это один как-то. –

ответ

2

Vector. IndSeq от scalaz должно быть еще лучше.

+1

И Веревка в предстоящем выпуске Scalaz 5.1. – Apocalisp

+0

Это должно быть (очень) немного хуже при «часто необходимо удалить и вставить элементы при произвольных индексах». –

4

Если вы вставляете элементы в случайных положениях больше, чем log (N)/N времени, к которым вы обращаетесь к ним, то вы, вероятно, должны использовать immutable.TreeSet, поскольку все операции O (log (N)). Если вы в основном делаете доступ или добавляете к (дальнему) концу, ArrayBuffer и Vector работают хорошо.

+0

Спасибо за ваш информативный ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^