Interfejs o nazwie Deque znajduje się w pakiecie java.util. Jest to podtyp kolejki interfejsu. Deque obsługuje dodawanie i usuwanie elementów z obu końców struktury danych. Dlatego deque może służyć jako stos lub kolejka. Wiemy, że stos obsługuje operację LIFO, a operacja First In First Out jest obsługiwana przez kolejkę. Ponieważ deque obsługuje oba, można na nim wykonać dowolną z wymienionych operacji. Deque to skrót od „podwójna kolejka”.
Deklaracja interfejsu Deque
public interface Deque extends Queue
Metody interfejsu Java Deque
metoda | Opis |
---|---|
wartość logiczna dodaj (obiekt) | Służy do wstawienia określonego elementu do tej deque i zwrócenia wartości true w przypadku powodzenia. |
oferta logiczna (obiekt) | Służy do wstawienia określonego elementu do tego deque. |
Usuń obiekt() | Służy do odzyskiwania i usuwania głowy tej deque. |
Sonda obiektu() | Służy do pobierania i usuwania nagłówka tej deque lub zwraca wartość null, jeśli ta deque jest pusta. |
Element obiektu() | Służy do odzyskiwania, ale nie usuwania, głowy tego deque. |
Podgląd obiektu() | Służy do pobierania, ale nie usuwa nagłówka tej deque lub zwraca wartość null, jeśli ta deque jest pusta. |
Podgląd obiektuFirst() | Metoda zwraca element główny deque. Metoda nie usuwa żadnego elementu z deque. Ta metoda zwraca wartość Null, gdy deque jest pusta. |
Podgląd obiektuOstatni() | Metoda zwraca ostatni element deque. Metoda nie usuwa żadnego elementu z deque. Ta metoda zwraca wartość Null, gdy deque jest pusta. |
Oferta logicznaPierwszy(e) | Wstawia element e na początku kolejki. Jeśli wstawienie się powiedzie, zwracana jest wartość true; w przeciwnym razie fałsz. |
Oferta obiektuOstatnie(e) | Wstawia element e na końcu kolejki. Jeśli wstawienie się powiedzie, zwracana jest wartość true; w przeciwnym razie fałsz. |
Klasa ArrayDeque
Wiemy, że w Javie nie da się stworzyć obiektu interfejsu. Dlatego do utworzenia instancji potrzebujemy klasy implementującej interfejs Deque, a tą klasą jest ArrayDeque. Rośnie i kurczy się w miarę użytkowania. Dziedziczy także klasę AbstractCollection.
Ważne punkty dotyczące klasy ArrayDeque to:
- W przeciwieństwie do Queue, możemy dodawać lub usuwać elementy z obu stron.
- Elementy null nie są dozwolone w ArrayDeque.
- ArrayDeque nie jest bezpieczny dla wątków w przypadku braku zewnętrznej synchronizacji.
- ArrayDeque nie ma ograniczeń pojemności.
- ArrayDeque jest szybszy niż LinkedList i Stack.
Hierarchia ArrayDeque
Hierarchię klasy ArrayDeque przedstawiono na rysunku po prawej stronie.
nieuporządkowana_mapa c++
Deklaracja klasy ArrayDeque
Zobaczmy deklarację klasy java.util.ArrayDeque.
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
Przykład Java ArrayDeque
Nazwa pliku: TablicaDequeExample.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); } } }
Wyjście:
Ravi Vijay Ajay
Przykład Java ArrayDeque: OfferFirst() i pollLast()
Nazwa pliku: 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); } } }
Wyjście:
After offerFirst Traversal... jai arvind vimal mukul After pollLast() Traversal... jai arvind vimal
Przykład Java ArrayDeque: Książka
Nazwa pliku: TablicaDequeExample.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); } } }
Wyjście:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6