Java Deque интерфейс
Интерфейсът, наречен Deque, присъства в пакета java.util. Това е подтип на интерфейсната опашка. Deque поддържа добавянето, както и премахването на елементи от двата края на структурата от данни. Следователно, deque може да се използва като стек или опашка. Знаем, че стекът поддържа операцията Last In First Out (LIFO), а операцията First In First Out се поддържа от опашка. Тъй като deque поддържа и двете, всяка от споменатите операции може да бъде извършена върху него. Deque е акроним за 'опашка с двоен край'.
Декларация на интерфейс Deque
public interface Deque extends Queue
Методи на Java Deque интерфейс
| Метод | Описание |
|---|---|
| булево добавяне (обект) | Използва се за вмъкване на посочения елемент в тази двойна последователност и връщане на true при успех. |
| булева оферта (обект) | Използва се за вмъкване на посочения елемент в тази двойна последователност. |
| Премахване на обект() | Използва се за извличане и премахване на главата на тази двойка. |
| Обектна анкета() | Използва се за извличане и премахване на главата на тази двойка или връща нула, ако тази двойка е празна. |
| Обектен елемент() | Използва се за извличане, но не премахване на главата на тази двойка. |
| Object peek() | Използва се за извличане, но не премахва, главата на тази двойна последователност или връща нула, ако тази двойна последователност е празна. |
| Обект peekFirst() | Методът връща главния елемент на deque. Методът не премахва нито един елемент от deque. Null се връща от този метод, когато втората последователност е празна. |
| Обект peekLast() | Методът връща последния елемент от deque. Методът не премахва нито един елемент от deque. Null се връща от този метод, когато втората последователност е празна. |
| Булева офертаFirst(e) | Вмъква елемента e в началото на опашката. Ако вмъкването е успешно, се връща true; в противен случай невярно. |
| Обект оферта Последна(е) | Вмъква елемента e в опашката на опашката. Ако вмъкването е успешно, се връща true; в противен случай невярно. |
Клас ArrayDeque
Знаем, че не е възможно да се създаде обект на интерфейс в Java. Следователно, за инстанциране се нуждаем от клас, който имплементира интерфейса Deque и този клас е ArrayDeque. Той расте и се свива според употребата. Той също така наследява класа AbstractCollection.
Важните точки за класа ArrayDeque са:
- За разлика от Queue, можем да добавяме или премахваме елементи от двете страни.
- Нулеви елементи не са разрешени в ArrayDeque.
- ArrayDeque не е безопасен за нишки при липса на външна синхронизация.
- ArrayDeque няма ограничения за капацитет.
- ArrayDeque е по-бърз от LinkedList и Stack.
Йерархия ArrayDeque
Йерархията на класа ArrayDeque е дадена на фигурата, показана в дясната страна на страницата.
Декларация на клас ArrayDeque
Нека да видим декларацията за класа java.util.ArrayDeque.
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
Пример за Java ArrayDeque
Име на файл: ArrayDequeExample.java
import java.util.*; public class ArrayDequeExample { public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Ravi'); deque.add('Vijay'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } } Изход:
Ravi Vijay Ajay
Пример за Java ArrayDeque: offerFirst() и pollLast()
Име на файл: DequeExample.java
import java.util.*; public class DequeExample { public static void main(String[] args) { Deque deque=new ArrayDeque(); deque.offer('arvind'); deque.offer('vimal'); deque.add('mukul'); deque.offerFirst('jai'); System.out.println('After offerFirst Traversal...'); for(String s:deque){ System.out.println(s); } //deque.poll(); //deque.pollFirst();//it is same as poll() deque.pollLast(); System.out.println('After pollLast() Traversal...'); for(String s:deque){ System.out.println(s); } } } Изход:
After offerFirst Traversal... jai arvind vimal mukul After pollLast() Traversal... jai arvind vimal
Пример за Java ArrayDeque: Книга
Име на файл: ArrayDequeExample.java
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayDequeExample { public static void main(String[] args) { Deque set=new ArrayDeque(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to Deque set.add(b1); set.add(b2); set.add(b3); //Traversing ArrayDeque for(Book b:set){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } } Изход:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6