Класс ArrayDeque
Класс ArrayDeque
представляет реализацию двусторонней очереди
(resizable array deque), которая позволяет эффективно добавлять
и удалять элементы как в начало (0
индекс), так и в конец коллекции.
При добавлении элементов автоматически увеличивает свой размер.
Является частью стандартной библиотеки Kotlin и имплементирует
интерфейс MutableList
.
Импорт
import kotlin.collections.ArrayDeque
Синтаксис
class ArrayDeque<E> : MutableList<E>
ArrayDeque()
ArrayDeque(initialCapacity: Int)
ArrayDeque(elements: Collection<E>)
Пример
Создадим пустую двустороннюю очередь и добавим элементы в начало и конец:
val deque = ArrayDeque<Int>()
deque.addFirst(1)
deque.addLast(2)
deque.addFirst(0)
deque.addLast(3)
println(deque)
Результат выполнения кода:
ArrayDeque [0, 1, 2, 3]
Пример
Удалим элементы из начала и конца двусторонней очереди:
val 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")
Результат выполнения кода:
Removed first: 0, last: 4
Remaining deque: [1, 2, 3]
Пример
Получим элементы из начала и конца без удаления:
val deque = ArrayDeque(listOf('a', 'b', 'c', 'd'))
val first = deque.first()
val last = deque.last()
println("First: $first, Last: $last")
println("Deque unchanged: $deque")
Результат выполнения кода:
First: a, Last: d
Deque unchanged: [a, b, c, d]
Пример
Создадим двустороннюю очередь из существующей коллекции:
val list = listOf(10, 20, 30)
val deque = ArrayDeque(list)
deque.addFirst(5)
deque.addLast(40)
println(deque)
Результат выполнения кода:
ArrayDeque [5, 10, 20, 30, 40]
Пример
Используем методы addFirst
и addLast
для добавления элементов:
val deque = ArrayDeque<String>()
deque.addFirst("world")
deque.addFirst("hello")
deque.addLast("!")
println(deque.joinToString(" "))
Результат выполнения кода:
String "hello world !"
Пример
Проверим, является ли очередь пустой:
val deque = ArrayDeque<Int>()
println("Is empty: ${deque.isEmpty()}")
deque.add(42)
println("Is empty: ${deque.isEmpty()}")
Результат выполнения кода:
Is empty: true
Is empty: false
Смотрите также
-
интерфейс
MutableList
,
который реализуетArrayDeque
-
интерфейс
Collection
,
базовый интерфейс для всех коллекций -
класс
ArrayList
,
реализация списка на основе массива -
класс
LinkedList
,
реализация списка на основе связанных элементов