Java.util paketinde Deque adı verilen arayüz bulunmaktadır. Arayüz kuyruğunun alt türüdür. Deque, veri yapısının her iki ucundan öğelerin eklenmesinin yanı sıra çıkarılmasını da destekler. Bu nedenle deque yığın veya kuyruk olarak kullanılabilir. Yığın Son Giren İlk Çıkar (LIFO) işlemini desteklediğini ve İlk Giren İlk Çıkar işleminin bir kuyruk tarafından desteklendiğini biliyoruz. Bir deque her ikisini de desteklediğinden, üzerinde bahsedilen işlemlerden herhangi biri gerçekleştirilebilir. Deque, şunun kısaltmasıdır: 'çift uçlu kuyruk'.
Deque Arayüzü beyanı
public interface Deque extends Queue
Java Deque Arayüzü Yöntemleri
Yöntem | Tanım |
---|---|
Boolean eklentisi (nesne) | Belirtilen elemanı bu deque'e eklemek ve başarı durumunda true değerini döndürmek için kullanılır. |
boolean teklifi(nesne) | Belirtilen elemanı bu deque'e eklemek için kullanılır. |
Nesne kaldırma() | Bu deque'nin kafasını almak ve çıkarmak için kullanılır. |
Nesne yoklaması() | Bu deque'in başını almak ve kaldırmak için kullanılır veya bu deque boşsa null değerini döndürür. |
Nesne öğesi() | Bu deque'in kafasını almak için kullanılır, ancak çıkarmaz. |
Nesneye göz atma() | Bu deque'in başını almak için kullanılır ancak kaldırmaz veya bu deque boşsa null değerini döndürür. |
Nesne peekFirst() | Yöntem, deque'in baş öğesini döndürür. Yöntem, deque'den herhangi bir öğeyi kaldırmaz. Deque boş olduğunda bu yöntemle null döndürülür. |
Nesne peekLast() | Yöntem, deque'nin son öğesini döndürür. Yöntem, deque'den herhangi bir öğeyi kaldırmaz. Deque boş olduğunda bu yöntemle null döndürülür. |
Boole teklifiFirst(e) | E öğesini kuyruğun önüne ekler. Ekleme başarılı olursa true değeri döndürülür; aksi takdirde yanlış. |
Nesne teklifiLast(e) | E öğesini kuyruğun sonuna ekler. Ekleme başarılı olursa true değeri döndürülür; aksi takdirde yanlış. |
ArrayDeque sınıfı
Java'da bir arayüzün nesnesini yaratmanın mümkün olmadığını biliyoruz. Bu nedenle örnekleme için Deque arayüzünü uygulayan bir sınıfa ihtiyacımız var ve bu sınıf ArrayDeque'dir. Kullanıma göre büyür ve küçülür. Ayrıca AbstractCollection sınıfını da miras alır.
ArrayDeque sınıfıyla ilgili önemli noktalar şunlardır:
- Queue'dan farklı olarak her iki taraftan da öğe ekleyebilir veya kaldırabiliriz.
- ArrayDeque'te boş öğelere izin verilmez.
- ArrayDeque, harici senkronizasyon olmadığında iş parçacığı açısından güvenli değildir.
- ArrayDeque'in kapasite sınırlaması yoktur.
- ArrayDeque, LinkedList ve Stack'tan daha hızlıdır.
DiziDeque Hiyerarşisi
ArrayDeque sınıfının hiyerarşisi sayfanın sağ tarafında gösterilen şekilde verilmiştir.
Oluşturucu tasarım deseni
ArrayDeque sınıf bildirimi
Java.util.ArrayDeque sınıfının bildirimine bakalım.
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
Java ArrayDeque Örneği
Dosya adı: 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); } } }
Çıktı:
Ravi Vijay Ajay
Java ArrayDeque Örneği: OfferFirst() ve pollLast()
Dosya adı: 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); } } }
Çıktı:
After offerFirst Traversal... jai arvind vimal mukul After pollLast() Traversal... jai arvind vimal
Java ArrayDeque Örnek: Kitap
Dosya adı: 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); } } }
Çıktı:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications & Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6