scalabook

Форк
0
/
array-buffer.md 
93 строки · 3.3 Кб

ArrayBuffer

ArrayBuffer

используется тогда, когда нужна изменяемая индексированная последовательность общего назначения. Поскольку ArrayBuffer
индексирован, произвольный доступ к элементам выполняется быстро.

Создание ArrayBuffer

Чтобы использовать ArrayBuffer

, в отличие от предыдущих рассмотренных классов, его нужно вначале импортировать:

import scala.collection.mutable.ArrayBuffer

Если необходимо начать с пустого ArrayBuffer

, просто укажите его тип:

var strings = ArrayBuffer[String]()
var ints = ArrayBuffer[Int]()
var people = ArrayBuffer[Person]()

Если известен примерный размер ArrayBuffer

, его можно задать:

val buf = new ArrayBuffer[Int](100_000)

Чтобы создать новый ArrayBuffer

с начальными элементами, достаточно просто указать начальные элементы, как для List
или Vector
:

val nums = ArrayBuffer(1, 2, 3)
val people = ArrayBuffer(
Person("Bert"),
Person("Ernie"),
Person("Grover")
)

Добавление элементов в ArrayBuffer

Новые элементы добавляются в ArrayBuffer

с помощью методов +=
и ++=
. Также можно использовать текстовый аналог: append
, appendAll
, insert
, insertAll
, prepend
и prependAll
. Вот несколько примеров с +=
и ++=
:

val nums = ArrayBuffer(1, 2, 3)
// nums: ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)
nums += 4
// res0: ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)
nums ++= List(5, 6)
// res1: ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6)

Удаление элементов из ArrayBuffer

ArrayBuffer

является изменяемым, поэтому у него есть такие методы, как -=
, --=
, clear
, remove
и другие. Примеры с -=
и --=
:

val a = ArrayBuffer.range('a', 'h')
// a: ArrayBuffer[Char] = ArrayBuffer('a', 'b', 'c', 'd', 'e', 'f', 'g')
a -= 'a'
// res2: ArrayBuffer[Char] = ArrayBuffer('b', 'c', 'd', 'e', 'f', 'g')
a --= Seq('b', 'c')
// res3: ArrayBuffer[Char] = ArrayBuffer('d', 'e', 'f', 'g')
a --= Set('d', 'e')
// res4: ArrayBuffer[Char] = ArrayBuffer('f', 'g')

Обновление элементов в ArrayBuffer

Элементы в ArrayBuffer

можно обновлять, либо переназначать:

val a = ArrayBuffer.range(1,5)
// a: ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)
a(2) = 50
println(a)
// ArrayBuffer(1, 2, 50, 4)
a.update(0, 10)
println(a)
// ArrayBuffer(10, 2, 50, 4)

Ссылки:

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

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

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

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