со страницы ScalaDocs : «Векторы реализуются с помощью сбалансированных по радиусу деревьев пальцев шириной 32». Array
индексируется через адресную арифметику c, как вы описали. Оба предлагают очень быстрый выбор произвольного доступа (читай «индексация»).
A List
, с другой стороны, выполняет медленный линейный поиск для каждого индексированного доступа. Так почему же списки так распространены в Scala коде?
Это потому, что произвольный доступ - не единственный способ доступа к элементам коллекции. Например, если вы хотите просто просмотреть последовательность, то List
очень эффективен.
Я где-то читал, что Мартин Одерски однажды проводил эксперимент, в котором он заменял каждый List
в коде компилятора на Vector
. Результатом стал более медленный компилятор.