scalabook

Форк
0
50 строк · 2.9 Кб

ArraySeq

Списки очень эффективны в алгоритмах которые активно использует head

. Получение, добавление и удаление к переднему (head
) элементу списка занимает постоянное время, в то время как доступ или изменение остальных элементов в списке занимает линейное время.

Последовательный массив (ArraySeq) - это тип коллекции, который решает проблему неэффективности случайного доступа к спискам.

ArraySeq

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

ArraySeq

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

val arr = scala.collection.immutable.ArraySeq(1, 2, 3)
// arr: ArraySeq[Int] = ArraySeq(1, 2, 3)
val arr2 = arr :+ 4
// arr2: ArraySeq[Int] = ArraySeq(1, 2, 3, 4)
arr2(0)
// res0: Int = 1

ArraySeq

-ы являются immutable, поэтому нельзя изменять элементы непосредственно в коллекции. Однако операции updated
, appended
и prepended
создают новые ArraySeq
-ы, которые отличаются от базового ArraySeq
только в одном элементе:

arr.updated(2, 4)
// res1: ArraySeq[Int] = ArraySeq(1, 2, 4)
arr
// res2: ArraySeq[Int] = ArraySeq(1, 2, 3)

Как видно из последней строки выше, вызов updated

не влияет на исходный ArraySeq
arr
.

ArraySeq

-ы хранят свои элементы в приватном массиве. Таким образом достигается компактное представление и обеспечивается быстрый индексированный доступ к элементам, но обновление или добавление одного элемента занимает линейное время, так как требует создания другого массива и копирования всех элементов исходного.

Изменяемый ArraySeq


Ссылки:

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.