Класс ArrayDeque

Класс ArrayDeque представляет реализацию двусторонней очереди (resizable array deque), которая позволяет эффективно добавлять и удалять элементы как в начало (0 индекс), так и в конец коллекции. При добавлении элементов автоматически увеличивает свой размер. Является частью стандартной библиотеки Kotlin и имплементирует интерфейс MutableList.

Импорт

kotlinimport kotlin.collections.ArrayDeque

Синтаксис

kotlinclass ArrayDeque<E> : MutableList<E>
kotlinArrayDeque()
kotlinArrayDeque(initialCapacity: Int)
kotlinArrayDeque(elements: Collection<E>)

Пример

Создадим пустую двустороннюю очередь и добавим элементы в начало и конец:

kotlinval deque = ArrayDeque<Int>()
deque.addFirst(1)
deque.addLast(2)
deque.addFirst(0)
deque.addLast(3)
println(deque)

Результат выполнения кода:

kotlinArrayDeque [0, 1, 2, 3]

Пример

Удалим элементы из начала и конца двусторонней очереди:

kotlinval deque = ArrayDeque(listOf(0, 1, 2, 3, 4))
val first = deque.removeFirst()
val last = deque.removeLast()
println("Removed first: $first, last: $last")
println("Remaining deque: $deque")

Результат выполнения кода:

kotlinRemoved first: 0, last: 4
Remaining deque: [1, 2, 3]

Пример

Получим элементы из начала и конца без удаления:

kotlinval deque = ArrayDeque(listOf('a', 'b', 'c', 'd'))
val first = deque.first()
val last = deque.last()
println("First: $first, Last: $last")
println("Deque unchanged: $deque")

Результат выполнения кода:

kotlinFirst: a, Last: d
Deque unchanged: [a, b, c, d]

Пример

Создадим двустороннюю очередь из существующей коллекции:

kotlinval list = listOf(10, 20, 30)
val deque = ArrayDeque(list)
deque.addFirst(5)
deque.addLast(40)
println(deque)

Результат выполнения кода:

kotlinArrayDeque [5, 10, 20, 30, 40]

Пример

Используем методы addFirst и addLast для добавления элементов:

kotlinval deque = ArrayDeque<String>()
deque.addFirst("world")
deque.addFirst("hello")
deque.addLast("!")
println(deque.joinToString(" "))

Результат выполнения кода:

kotlinString "hello world !"

Пример

Проверим, является ли очередь пустой:

kotlinval deque = ArrayDeque<Int>()
println("Is empty: ${deque.isEmpty()}")
deque.add(42)
println("Is empty: ${deque.isEmpty()}")

Результат выполнения кода:

kotlinIs empty: true
Is empty: false

Смотрите также

  • интерфейс MutableList,
    который реализует ArrayDeque
  • интерфейс Collection,
    базовый интерфейс для всех коллекций
  • класс ArrayList,
    реализация списка на основе массива
  • класс LinkedList,
    реализация списка на основе связанных элементов