deque java deque implementation
Bu Öğretici, Java'daki Deque veya 'Çift Uçlu Kuyruk' hakkında Ayrıntılı Açıklama sağlar. Deque Arayüzü, API Yöntemleri, Uygulama vb. Hakkında bilgi edineceksiniz:
Java'daki Deque veya 'çift uçlu kuyruk', her iki uçtan eleman ekleyebileceğimiz veya silebileceğimiz bir veri yapısıdır. Deque, Java'da java.util paketine ait bir arayüzdür ve java.queue arayüzünü uygular.
Deque'i bir yığın (Son Giren, İlk Çıkar) yapısı veya bir kuyruk (ilk giren ilk çıkar) olarak uygulayabiliriz. Deque, Stack ve / veya LinkedList'ten daha hızlıdır. Deque, 'kart destesi' gibi 'deste' olarak telaffuz edilir.
=> Java Eğitim Öğreticilerinin A-Z'sini Burada Görmek İçin Burayı Kontrol Edin.
Ne öğreneceksin:
Java hakkında
Tipik bir deque koleksiyonu aşağıda gösterildiği gibi görünecektir:

masaüstü destek mühendisi mülakat soruları ve yanıtları
Deque, çoğunlukla yığın, kuyruk veya liste veri yapılarını uygulamak için kullanılır. Öncelik sıralarını uygulamak için de kullanılabilir. Çoğunlukla web tarayıcılarında bulunan geri alma veya geçmiş özellikleri, deques kullanılarak uygulanabilir.
Java Deque Arayüzü
Aşağıdaki diyagram, çift uçlu kuyruk veya sıra sırasının hiyerarşisini göstermektedir. Aşağıdaki şemada gösterildiği gibi, Deque arayüzü, Sırayla Koleksiyon arayüzünü genişleten Kuyruk arayüzüne uzanır.

Programımızda bir deque arabirimi kullanmak için, deque işlevselliğini tutan paketi aşağıda gösterildiği gibi bir import deyimi kullanarak içe aktarmamız gerekir.
import java.util.deque; veya
import java.util.*; Deque bir arayüz olduğu için, deque arayüzünün işlevselliğini uygulamak için somut sınıflara ihtiyacımız var.
Aşağıdaki iki sınıf, deque arayüzünü uygular.
- ArrayDeque
- Bağlantılı liste
Dolayısıyla, aşağıda gösterildiği gibi bu iki sınıfı kullanarak deque nesneleri oluşturabiliriz:
Deque numdeque = new ArrayDeque (); Deque strDeque = new LinkedList (); Bu nedenle, yukarıdaki deque nesneleri başarılı bir şekilde yaratıldıktan sonra, deque arayüzünün işlevselliğini kullanabilir.
Aşağıda, deque hakkında dikkat edilmesi gereken birkaç önemli nokta verilmiştir:
- Deque arabirimi, gerektiği kadar büyüyebilen yeniden boyutlandırılabilir dizileri destekler.
- Dizi deque'leri Null değerlerin kullanımına izin vermez.
- Deque, birden fazla iş parçacığı tarafından eşzamanlı erişimi desteklemez.
- Dış senkronizasyon sağlanmadıkça Deque iş parçacığı açısından güvenli değildir.
Java'da ArrayDeque
ArrayDeque, java.util paketine aittir. Deque arayüzünü uygular. Dahili olarak, ArrayDeque sınıfı, öğe sayısı arttıkça büyüyen dinamik olarak yeniden boyutlandırılabilir bir diziden yararlanır.
Aşağıdaki diyagram, ArrayDeque sınıfının hiyerarşisini gösterir:

Diyagramda gösterildiği gibi, ArrayDeque sınıfı AbstractCollection sınıfını miras alır ve Deque arabirimini uygular.
java'da ikili arama ağacı nasıl oluşturulur
Aşağıda gösterildiği gibi ArrayDeque sınıfını kullanarak bir deque nesnesi oluşturabiliriz:
Deque deque_obj = new ArrayDeque (); ve Örnek
Aşağıdaki Java programı, sekmeyi daha iyi anlamak için basit bir örnek göstermektedir. Burada, deque arayüzünü somutlaştırmak için ArrayDeque sınıfını kullandık. Deque nesnesine bazı öğeler ekledik ve sonra bunları bir forEach döngüsü kullanarak yazdırdık.
import java.util.*; public class Main { public static void main(String() args) { //Creat a Deque and add elements Deque cities_deque = new ArrayDeque(); cities_deque.add('Delhi'); cities_deque.add('Mumbai'); cities_deque.add('Bangaluru'); System.out.println('Deque Contents:'); //Traverse the Deque for (String str : cities_deque) { System.out.print(str + ' '); } } } Çıktı:

Java API VE YÖNTEMLER
Deque arabirimi bir kuyruk arabirimi uyguladığından, kuyruk arabiriminin tüm yöntemlerini destekler. Ayrıca deque arabirimi, deque nesnesiyle çeşitli işlemleri gerçekleştirmek için kullanılabilecek aşağıdaki yöntemleri sağlar.
Bu yöntemleri aşağıdaki tabloda özetleyelim.
| Yöntem | Yöntem Prototipi | Açıklama |
|---|---|---|
| getFirst | E getFirst () | Süslemenin ilk öğesini çıkarmadan geri alın. |
| Ekle | boole toplamı (E e) | Kapasite kısıtlamalarını ihlal etmeden verilen e öğesini deque'e (kuyrukta) ekler ve başarılı olursa doğru döndürür. Sırada boş alan yoksa IllegalStateException atar. |
| addFirst | void addFirst (E e) | Verilen e öğesini, kapasite kısıtlamalarını ihlal etmeden kuyruğun önüne ekler. |
| addLast | void addLast (E e) | Kapasite kısıtlamalarını ihlal etmeden süslemenin sonuncusuna e öğesini ekler. |
| içerir | boolean içerir (Object o) | Süslemenin verilen o elemanını içerip içermediğini kontrol eder. Evet ise doğru döndürür. |
| descendingIterator | Yineleyici azalanIterator () | Bu yöntem, sekme için ters sıra yineleyicisi döndürür. |
| element | E öğesi () | Dekorun ilk öğesini veya başını döndürür. Öğenin silinmediğini unutmayın. |
| getLast | E getLast () | Deque'in son öğesini çıkarmadan alır. |
| yineleyici | Yineleyici yineleyici () | Deque öğelerinin üzerinde standart bir yineleyici döndürür. |
| teklif | boole teklifi (E e) | Kapasite kısıtlamalarını ihlal etmeden verilen e öğesini deque'e (kuyruk olarak) ekler. Başarı durumunda doğru, başarısızlık halinde yanlış döndürür. |
| OfferFirst | boolean offerFirst (E e) | Verilen e öğesini, kapasite kısıtlamalarını ihlal etmeden dekorun önüne yerleştirin. |
| teklif | boolean teklifSon (E e) | Verilen e öğesini, kapasite kısıtlamalarını ihlal etmeden dekorun sonuna yerleştirin. |
| dikizlemek | E gözetleme () | Kuyruk boşsa, sıranın başını (birinci öğe) veya null döndürür. ** kafayı silmez |
| PeekFirst | E peekFirst () | Deque'teki ilk öğeyi silmeden döndürür. Süs boşsa null döndürür. |
| peekLast | E peekLast () | Süslemedeki son öğeyi çıkarmadan alır. Süs boşsa null döndürür. |
| anket | E anket () | Arka planın başını siler ve döndürür. Süs boşsa null döndürür. |
| anket | E anket İlk () | Süslemenin ilk öğesini döndürür ve kaldırır. Süs boşsa null döndürür. |
| anket | E anketSon () | Dekorun son öğesini döndürür ve kaldırır. Süs boşsa null döndürür. |
| pop | E pop () | Deque kullanılarak temsil edilen yığından öğeyi açın. |
| it | geçersiz itme (E e) | Deque kullanılarak temsil edilen yığına, kapasite kısıtlamalarını ihlal etmeden belirtilen e öğesini itin. Başarı durumunda true veya deque üzerinde boş alan yoksa IllegalStateException döndürür. |
| Kaldır | E kaldır () | Dekonun başını çıkarın ve geri koyun. |
| Kaldır | boole kaldır (Object o) | Verilen o öğesinin ilk oluşumunu deque'den kaldırın. |
| removeFirst | E removeFirst () | Dekorun ilk elemanını çıkarın ve geri döndürün. |
| removeFirstOccurrence | boolean removeFirstOccurrence (Nesne o) | Verilen o öğesinin ilk oluşumunu deque'den kaldırır. |
| removeLast | E kaldırSon () | Sıradaki son öğeyi alır ve siler. |
| removeLastOccurrence | boolean removeLastOccurrence (Nesne o) | Deque'den belirli bir o öğesinin son oluşumunu siler. |
| boyut | int size () | Sıradaki öğelerin boyutunu veya sayısını döndürür. |
Ve Java'da Uygulama
Şimdi, yukarıda tartışılan başlıca deque yöntemlerinden bazılarını göstermek için bir Java programı uygulayalım.
Bu programda, String tipi bir deque kullanıyoruz ve ardından add, addFirst, addLast, push, offer, offerFirst, vb. Gibi çeşitli yöntemleri kullanarak bu diziye elemanlar ekliyoruz. Daha sonra, öğeleri yazdırmak için geri çekme ve çapraz geçiş için standart ve ters yineleyicileri tanımlarız.
Ayrıca include, pop, push, peek, anket, kaldır vb. Gibi diğer yöntemleri de kullanıyoruz.
import java.util.*; public class Main { public static void main(String() args) { //Declare Deque object Deque deque = new LinkedList(); // add elements to the queue using various methods deque.add('One'); //add () deque.addFirst('Two'); //addFirst () deque.addLast('Three'); //addLast () deque.push('Four'); //push () deque.offer('Five'); //offer () deque.offerFirst('Six'); //offerFirst () deque.offerLast('Seven'); //offerLast () System.out.println('Initial Deque:'); System.out.print(deque + ' '); // Iterate using standard iterator System.out.println('
Deque contents using Standard Iterator:'); Iterator iterator = deque.iterator(); while (iterator.hasNext()) System.out.print(' ' + iterator.next()); // Iterate using Reverse order iterator Iterator reverse = deque.descendingIterator(); System.out.println('
Deque contents using Reverse Iterator:'); while (reverse.hasNext()) System.out.print(' ' + reverse.next()); // Peek () method System.out.println('
Deque Peek:' + deque.peek()); System.out.println('
Deque,After peek:' + deque); // Pop () method System.out.println('
Deque Pop:' + deque.pop()); System.out.println('
Deque,After pop:' + deque); // contains () method System.out.println('
Deque Contains Three: ' + deque.contains('Three')); deque.removeFirst(); //removeFirst () deque.removeLast(); //removeLast () System.out.println('
Deque, after removing ' + 'first and last elements: ' + deque); } }Çıktı:

Sıkça Sorulan Sorular
S # 1) Deque iş parçacığı güvenli Java mı?
Cevap: ArrayDeque iş parçacığı açısından güvenli değildir. Ancak java.util.concurrent sınıfındaki BlockingDeque arabirimi deque'i temsil eder. Bu deque iş parçacığı açısından güvenlidir.
S # 2) Deque neden yığından daha hızlıdır?
Cevap: Deque arabirimini uygulayan ArrayDeque arabirimi, önceki veya sonraki düğümlerin kaydını tutması gerekmediğinden bellek açısından verimlidir. Ayrıca, yeniden boyutlandırılabilir bir uygulamadır. Böylece deque, yığından daha hızlıdır.
S # 3) Deque bir yığın mı?
Cevap: Sıra, çift uçlu bir kuyruktur. LIFO davranışına izin verir ve bu nedenle bir yığın olmasa da bir yığın olarak uygulanabilir.
S # 4) Deque nerede kullanılır?
Cevap: Deque, çoğunlukla geri alma ve geçmiş gibi özellikleri uygulamak için kullanılır.
S # 5) Deque dairesel mi?
Cevap: Evet, Deque daireseldir.
Sonuç
Bu, Java'daki Deque arayüzü hakkındaki eğitimimizi tamamlar. Deque arabirimi, öğeleri her iki uçtan ekleyebilen ve silebilen bir koleksiyon olan bir deque veri yapısı tarafından uygulanır.
İki sınıf, yani ArrayDeque ve LinkedList deque arabirimini uygular. Bu sınıfları deque arayüzünün işlevselliğini uygulamak için kullanabiliriz.
=> Özel Java Eğitimi Eğitim Dizisi İçin Burayı Ziyaret Edin.
Önerilen Kaynaklar
- Örneklerle C ++ 'da Çift Uçlu Kuyruk (Deque)
- Java Kuyruğu - Kuyruk Yöntemleri, Örneklerle Kuyruk Uygulaması
- Java Priority Queue Tutorial - Uygulama ve Örnekler
- Çizim ile C ++ 'da Öncelik Sırası Veri Yapısı
- Çizim ile C ++ 'da Kuyruk Veri Yapısı
- C ++ Dairesel Sıra Veri Yapısı: Uygulama ve Uygulamalar
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- STL'de Öncelik Sırası