Класс Java ArrayDeque: Руководство для начинающих
Введение
Привет, будущие маги Java! Сегодня мы отправляемся в захватывающее путешествие в мир класса ArrayDeque Java. Я знаю, что вы можете подумать: "Deque? Это какое-то изысканное французское слово?" Ну, не совсем! В мире программирования deque (произносится "дек") означает двустороннюю очередь. Это как линия на аттракционе в парке, где люди могут присоединяться или уходить с обеих сторон. Круто, правда?
ArrayDeque — это реализация интерфейса Deque в Java, и это мощное инструмент в вашем наборе программирования. Это как швейцарский армейский нож для хранения и манипуляции данными. Пристегните ремни и давайте погружаемся!
Декларация класса ArrayDeque
Перед тем как начать использовать ArrayDeque, нам нужно узнать, как его объявить. Это действительно просто. Вот как это делается:
import java.util.ArrayDeque;
ArrayDeque<Integer> numbers = new ArrayDeque<Integer>();
В этом примере мы создаем ArrayDeque, который будет хранить объекты Integer. Но не волнуйтесь, ArrayDeque гибкий — вы можете использовать его с любым типом объекта!
Конструкторы класса ArrayDeque
ArrayDeque имеет три конструктора. Представьте конструкторы как разные способы построения вашего deque:
-
ArrayDeque()
: Создает пустую очередь с начальной емкостью 16 элементов. -
ArrayDeque(int numElements)
: Создает очередь с указанной начальной емкостью. -
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);
}
}
Разберем это:
- Мы начинаем с создания ArrayDeque под названием
tasks
. - Мы добавляем задачи с помощью
addFirst()
,addLast()
,offerFirst()
иofferLast()
. Обратите внимание, как мы можем добавлять задачи с обеих сторон очереди. - Затем мы удаляем задачи с обеих сторон с помощью
removeFirst()
иremoveLast()
. - Наконец, мы просматриваем первую и последнюю задачи без их удаления с помощью
peekFirst()
иpeekLast()
.
Вывод
Когда вы выполните этот код, вы увидите что-то вроде этого:
Текущие задачи: [Назначить будильник, Проснуться, Почистить зубы, Пойти в постель]
Выполнена первая задача: Назначить будильник
Выполнена последняя задача: Пойти в постель
Оставшиеся задачи: [Проснуться, Почистить зубы]
Следующая задача: Проснуться
Последняя задача: Почистить зубы
Итак, у вас есть! Вы только что создали, манипулировали и исследовали ArrayDeque. Довольно интересно, не так ли?
Помните, практика — это основа. Попробуйте создать свой собственный ArrayDeque и экспериментируйте с различными методами. Вы можете создать менеджер плейлистов, трекер истории браузера или даже простую систему отмены/повторения!
ArrayDeque — это как хороший друг: всегда рядом, когда нужно, готов помочь с обеих сторон. Так что не стесняйтесь, познакомьтесь с ним поближе, и скоро вы будете deque-ing как профи!
Счастливого кодирования, будущие мастера Java! ??
Credits: Image by storyset