Rozhraní Java Deque
Rozhraní s názvem Deque je přítomno v balíčku java.util. Je to podtyp fronty rozhraní. Deque podporuje přidávání i odstraňování prvků z obou konců datové struktury. Proto lze deque použít jako zásobník nebo frontu. Víme, že zásobník podporuje operaci LIFO (Last In First Out) a operace First In First Out je podporována frontou. Protože deque podporuje obojí, lze na něm provádět kteroukoli z uvedených operací. Deque je zkratka pro „dvojitá fronta“.
Deque Interface deklarace
public interface Deque extends Queue
Metody Java Deque Interface
| Metoda | Popis |
|---|---|
| booleovské přidání (objekt) | Používá se k vložení zadaného prvku do tohoto deque a při úspěchu vrátí hodnotu true. |
| booleovská nabídka (objekt) | Slouží k vložení zadaného prvku do tohoto deque. |
| Object remove() | Slouží k vytažení a odstranění hlavy tohoto deka. |
| Object poll() | Používá se k načtení a odstranění hlavy tohoto deque, nebo vrátí hodnotu null, pokud je tento deque prázdný. |
| Object element() | Používá se k aportování, ale neodstraňuje hlavu tohoto deque. |
| Pohled na objekt () | Používá se k načtení, ale neodstraní hlavičku tohoto deque, nebo vrátí hodnotu null, pokud je tento deque prázdný. |
| Objekt peekFirst() | Metoda vrací element head deque. Metoda neodstraní žádný prvek z deque. Tato metoda vrací hodnotu Null, když je deque prázdný. |
| Objekt peekLast() | Metoda vrací poslední prvek deque. Metoda neodstraní žádný prvek z deque. Tato metoda vrací hodnotu Null, když je deque prázdný. |
| Booleovská nabídkaFirst(e) | Vloží prvek e na začátek fronty. Pokud je vložení úspěšné, je vráceno true; jinak falešné. |
| Nabídka objektuPoslední(e) | Vloží prvek e na konec fronty. Pokud je vložení úspěšné, je vráceno true; jinak falešné. |
třída ArrayDeque
Víme, že v Javě není možné vytvořit objekt rozhraní. Pro vytvoření instance tedy potřebujeme třídu, která implementuje rozhraní Deque, a tou třídou je ArrayDeque. Při používání roste a zmenšuje se. Také zdědí třídu AbstractCollection.
Důležité body o třídě ArrayDeque jsou:
- Na rozdíl od Queue můžeme přidávat nebo odebírat prvky z obou stran.
- Nulové prvky nejsou v ArrayDeque povoleny.
- ArrayDeque není bezpečné pro vlákna, protože neexistuje externí synchronizace.
- ArrayDeque nemá žádná omezení kapacity.
- ArrayDeque je rychlejší než LinkedList a Stack.
Hierarchie ArrayDeque
Hierarchie třídy ArrayDeque je uvedena na obrázku zobrazeném na pravé straně stránky.
Deklarace třídy ArrayDeque
Podívejme se na deklaraci třídy java.util.ArrayDeque.
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
Příklad Java ArrayDeque
Název souboru: 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); } } } Výstup:
Ravi Vijay Ajay
Příklad Java ArrayDeque: offerFirst() a pollLast()
Název souboru: 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); } } } Výstup:
After offerFirst Traversal... jai arvind vimal mukul After pollLast() Traversal... jai arvind vimal
Java ArrayDeque Příklad: Kniha
Název souboru: 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); } } } Výstup:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6