АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
198 of 1310 menu
Бесплатный тренинг по PHP: форматирование строк. Начало 25 сентября. Жми для записи!

Класс 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,
    реализация списка на основе связанных элементов