Класс Java ArrayDeque: Руководство для начинающих

Введение

Привет, будущие маги Java! Сегодня мы отправляемся в захватывающее путешествие в мир класса ArrayDeque Java. Я знаю, что вы можете подумать: "Deque? Это какое-то изысканное французское слово?" Ну, не совсем! В мире программирования deque (произносится "дек") означает двустороннюю очередь. Это как линия на аттракционе в парке, где люди могут присоединяться или уходить с обеих сторон. Круто, правда?

Java -  ArrayDeque

ArrayDeque — это реализация интерфейса Deque в Java, и это мощное инструмент в вашем наборе программирования. Это как швейцарский армейский нож для хранения и манипуляции данными. Пристегните ремни и давайте погружаемся!

Декларация класса ArrayDeque

Перед тем как начать использовать ArrayDeque, нам нужно узнать, как его объявить. Это действительно просто. Вот как это делается:

import java.util.ArrayDeque;

ArrayDeque<Integer> numbers = new ArrayDeque<Integer>();

В этом примере мы создаем ArrayDeque, который будет хранить объекты Integer. Но не волнуйтесь, ArrayDeque гибкий — вы можете использовать его с любым типом объекта!

Конструкторы класса ArrayDeque

ArrayDeque имеет три конструктора. Представьте конструкторы как разные способы построения вашего deque:

  1. ArrayDeque(): Создает пустую очередь с начальной емкостью 16 элементов.
  2. ArrayDeque(int numElements): Создает очередь с указанной начальной емкостью.
  3. ArrayDeque(Collection<? extends E> c): Создает очередь, содержащую элементы указанной коллекции.

Давайте посмотрим на их в действии:

// Конструктор по умолчанию
ArrayDeque<String> fruits1 = new ArrayDeque<>();

// Конструктор с начальной емкостью
ArrayDeque<String> fruits2 = new ArrayDeque<>(20);

// Конструктор с коллекцией
ArrayList<String> fruitList = new ArrayList<>();
fruitList.add("Apple");
fruitList.add("Banana");
ArrayDeque<String> fruits3 = new ArrayDeque<>(fruitList);

Методы класса ArrayDeque

Теперь давайте рассмотрим некоторые из наиболее часто используемых методов в ArrayDeque. Я предпочитаю думать о этих методах как о различных трюках, которые может выполнить ваш швейцарский армейский нож.

Метод Описание
addFirst(E e) Добавляет элемент в начало очереди
addLast(E e) Добавляет элемент в конец очереди
offerFirst(E e) Добавляет элемент в начало очереди (возвращает boolean)
offerLast(E e) Добавляет элемент в конец очереди (возвращает boolean)
removeFirst() Удаляет и возвращает первый элемент
removeLast() Удаляет и возвращает последний элемент
pollFirst() Удаляет и возвращает первый элемент (или null, если пусто)
pollLast() Удаляет и возвращает последний элемент (или null, если пусто)
getFirst() Возвращает первый элемент без удаления
getLast() Возвращает последний элемент без удаления
peekFirst() Возвращает первый элемент без удаления (или null, если пусто)
peekLast() Возвращает последний элемент без удаления (или null, если пусто)

Пример добавления и удаления элементов из ArrayDeque

Давайте применим наше новообретенное знание с практическим примером. Представьте, что мы управляем списком задач, где задачи могут добавляться или удаляться с обеих сторон.

import java.util.ArrayDeque;

public class ToDoList {
public static void main(String[] args) {
ArrayDeque<String> tasks = new ArrayDeque<>();

// Добавление задач
tasks.addFirst("Проснуться");
tasks.addLast("Почистить зубы");
tasks.offerFirst("Назначить будильник");
tasks.offerLast("Пойти в постель");

System.out.println("Текущие задачи: " + tasks);

// Удаление задач
String firstTask = tasks.removeFirst();
String lastTask = tasks.removeLast();

System.out.println("Выполнена первая задача: " + firstTask);
System.out.println("Выполнена последняя задача: " + lastTask);
System.out.println("Оставшиеся задачи: " + tasks);

// Просмотр задач
String nextTask = tasks.peekFirst();
String finalTask = tasks.peekLast();

System.out.println("Следующая задача: " + nextTask);
System.out.println("Последняя задача: " + finalTask);
}
}

Разберем это:

  1. Мы начинаем с создания ArrayDeque под названием tasks.
  2. Мы добавляем задачи с помощью addFirst(), addLast(), offerFirst() и offerLast(). Обратите внимание, как мы можем добавлять задачи с обеих сторон очереди.
  3. Затем мы удаляем задачи с обеих сторон с помощью removeFirst() и removeLast().
  4. Наконец, мы просматриваем первую и последнюю задачи без их удаления с помощью peekFirst() и peekLast().

Вывод

Когда вы выполните этот код, вы увидите что-то вроде этого:

Текущие задачи: [Назначить будильник, Проснуться, Почистить зубы, Пойти в постель]
Выполнена первая задача: Назначить будильник
Выполнена последняя задача: Пойти в постель
Оставшиеся задачи: [Проснуться, Почистить зубы]
Следующая задача: Проснуться
Последняя задача: Почистить зубы

Итак, у вас есть! Вы только что создали, манипулировали и исследовали ArrayDeque. Довольно интересно, не так ли?

Помните, практика — это основа. Попробуйте создать свой собственный ArrayDeque и экспериментируйте с различными методами. Вы можете создать менеджер плейлистов, трекер истории браузера или даже простую систему отмены/повторения!

ArrayDeque — это как хороший друг: всегда рядом, когда нужно, готов помочь с обеих сторон. Так что не стесняйтесь, познакомьтесь с ним поближе, и скоро вы будете deque-ing как профи!

Счастливого кодирования, будущие мастера Java! ??

Credits: Image by storyset