2013-02-26 2 views
1

Scala предлагает так много коллекций ... Я не уверен, какой из них использовать.Итерация неизменяемых Seq, Vector и List: любые различия?

Моя функция генерирует набор предопределенных количеств элементов, которые должны повторяться поочередно по их первоначальному порядку.

Все неизменяемые Vector, Seq и List поддержка итерации, но какой из них использовать?

+2

FYI http://docs.scala-lang.org/overviews/collections/introduction.html и особенно http://docs.scala-lang.org/overviews/collections/concrete-immutable-collection-classes.html –

+0

очень подробный ответ можно найти по адресу http://stackoverflow.com/questions/1722137/scala-2-8-collections-design-tutorial –

+0

Если ваша функция фактически генерирует элементы, это может стоить вернуть поток. Таким образом, генерируются только те элементы, которые фактически используются, которые могут, в зависимости от вашего конкретного варианта использования, сократить некоторые вычислительные издержки. –

ответ

0

Вы ищете коллекцию, которая ведет заказ. Любая коллекция, которая расширяет seq, поддерживает порядок добавления элементов.

[scaladocs] Sequences have two principal subtraits, IndexedSeq and LinearSeq, which give different guarantees for performance. An IndexedSeq provides fast random-access of elements and a fast length operation. A LinearSeq provides fast access only to the first element via head, but also has a fast tail operation

List расширяет LinearSeq, в то время как Vector расширяет IndexedSeq

Выбор между ними будет зависеть от того, как вы хотите получить доступ к данным, а также операции, которые вы хотите выполняет на данных.

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