Skip to content
This repository was archived by the owner on May 4, 2021. It is now read-only.

Latest commit

 

History

History
109 lines (76 loc) · 5.21 KB

Concrete-Mutable_Array_Buffers.md

File metadata and controls

109 lines (76 loc) · 5.21 KB

Массивы-Буфферы (Array Buffers)

ArrayBuffer содержит массив и размер. Большинство операций с буфером массива имеют ту же скорость, что и для массива, поскольку операции просто обеспечивают доступ и изменение базового массива. Кроме того, массивы-буфферы могут эффективно добавлять данные в конец. При добавлении элемента в буфер массива учитывается постоянное время. Таким образом, буферы массивов полезны для эффективного создания большой коллекции всякий раз, когда новые элементы всегда добавляются в конец.

    scala> val buf = scala.collection.mutable.ArrayBuffer.empty[Int]
      buf: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
    
    scala> buf += 1
      res32: buf.type = ArrayBuffer(1)
    
    scala> buf += 10
      res33: buf.type = ArrayBuffer(1, 10)
    
    scala> buf.toArray
      res34: Array[Int] = Array(1, 10)

удаление элементов

ArrayBuffer - изменяемая последовательность, поэтому вы можете удалять элементы с помощью обычных методов -=, -=, remove и clear.

Вы можете удалить один или несколько элементов с помощью: -=:

    import scala.collection.mutable.ArrayBuffer
    
    val x = ArrayBuffer('a', 'b', 'c', 'd', 'e')
    
    // удалить один элемент
    x -= 'a'
    
    // удалить несколько элементов (методы определяют параметр varargs)
    x -= ('b', 'c')

Используйте -= чтобы удалить несколько элементов, объявленных в другой коллекции (любая коллекция, которая расширяет TraversableOnce):

    val x = ArrayBuffer('a', 'b', 'c', 'd', 'e')
    x --= Seq('a', 'b')
    x --= Array('c')
    x --= Set('d')

Используйте метод remove для удаления одного элемента по его позиции в массиве ArrayBuffer или последовательности элементов, начинающихся в исходной позиции:

    scala> val x = ArrayBuffer('a', 'b', 'c', 'd', 'e', 'f')
    x: scala.collection.mutable.ArrayBuffer[Char] = ArrayBuffer(a, b, c, d, e, f)
    
    scala> x.remove(0)
    res0: Char = a
    
    scala> x
    res1: scala.collection.mutable.ArrayBuffer[Char] = ArrayBuffer(b, c, d, e, f)
    
    scala> x.remove(1, 3)
    
    scala> x
    res2: scala.collection.mutable.ArrayBuffer[Char] = ArrayBuffer(b, f)

В этих примерах коллекция, содержащая элементы, подлежащие удалению, может быть любой коллекцией, которая расширяет TraversableOnce, поэтому removeThese может быть Seq, Array, Vector и многими другими типами, которые расширяют.

Открытый метод удаляет все элементы из массива ArrayBuffer:

    scala> var a = ArrayBuffer(1,2,3,4,5)
    a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5)
    
    scala> a.clear
    
    scala> a
    res0: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

Вы также можете использовать обычные методы фильтрации Crfkf (drop, filter, take и т.д.) Для фильтрации элементов из коллекции; просто не забудьте присвоить результат новой переменной.

Буфферы-Списки (List Buffers)

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

    scala> val buf = scala.collection.mutable.ListBuffer.empty[Int]
        buf: scala.collection.mutable.ListBuffer[Int] = ListBuffer()
    
    scala> buf += 1
        res35: buf.type = ListBuffer(1)
    
    scala> buf += 10
        res36: buf.type = ListBuffer(1, 10)
    
    scala> buf.toList
        res37: List[Int] = List(1, 10)

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

<= содержание