الواجهة المسماة Deque موجودة في حزمة java.util. إنه النوع الفرعي لقائمة انتظار الواجهة. يدعم Deque إضافة وإزالة العناصر من طرفي بنية البيانات. لذلك، يمكن استخدام deque كمكدس أو قائمة انتظار. نحن نعلم أن المكدس يدعم عملية Last In First Out (LIFO)، وأن عملية First In First Out مدعومة بقائمة الانتظار. وبما أن deque يدعم كليهما، فيمكن تنفيذ أي من العمليات المذكورة عليه. Deque هو اختصار لـ 'قائمة انتظار مزدوجة النهاية'.
إعلان واجهة Deque
public interface Deque extends Queue
طرق واجهة Java Deque
طريقة | وصف |
---|---|
إضافة منطقية (كائن) | يتم استخدامه لإدراج العنصر المحدد في هذا deque وإرجاع صحيح عند النجاح. |
عرض منطقي (كائن) | يتم استخدامه لإدراج العنصر المحدد في هذا deque. |
إزالة الكائن () | يتم استخدامه لاسترداد وإزالة رأس هذا deque. |
استطلاع الكائن () | يتم استخدامه لاسترداد وإزالة رأس deque هذا، أو إرجاع قيمة فارغة إذا كان deque فارغًا. |
عنصر الكائن() | يتم استخدامه لاسترداد رأس هذا deque، لكنه لا يزيله. |
نظرة خاطفة على الكائن () | يتم استخدامه لاسترداد رأس deque هذا، لكنه لا يزيله، أو يُرجع قيمة فارغة إذا كان deque فارغًا. |
نظرة خاطفة على الكائن () | تقوم الطريقة بإرجاع عنصر الرأس الخاص بـ deque. لا تقوم الطريقة بإزالة أي عنصر من deque. يتم إرجاع Null بهذه الطريقة عندما يكون deque فارغًا. |
نظرة خاطفة على الكائن () | تقوم الطريقة بإرجاع العنصر الأخير من deque. لا تقوم الطريقة بإزالة أي عنصر من deque. يتم إرجاع Null بهذه الطريقة عندما يكون deque فارغًا. |
العرض المنطقي أولاً (هـ) | إدراج العنصر e في مقدمة قائمة الانتظار. إذا نجح الإدراج، فسيتم إرجاع true؛ وإلا فهو كاذب. |
عرض الكائنالأخير(ه) | إدراج العنصر e في ذيل قائمة الانتظار. إذا نجح الإدراج، فسيتم إرجاع true؛ وإلا فهو كاذب. |
فئة ArrayDeque
نحن نعلم أنه ليس من الممكن إنشاء كائن واجهة في Java. لذلك، لإنشاء مثيل، نحتاج إلى فئة تنفذ واجهة Deque، وهذه الفئة هي ArrayDeque. ينمو ويتقلص حسب الاستخدام. كما أنه يرث فئة AbstractCollection.
النقاط المهمة حول فئة ArrayDeque هي:
- على عكس قائمة الانتظار، يمكننا إضافة أو إزالة العناصر من كلا الجانبين.
- العناصر الفارغة غير مسموح بها في ArrayDeque.
- ArrayDeque ليس مؤشر ترابط آمن، في غياب المزامنة الخارجية.
- ArrayDeque ليس لديه قيود على السعة.
- ArrayDeque أسرع من LinkedList وStack.
ArrayDeque التسلسل الهرمي
يظهر التسلسل الهرمي لفئة ArrayDeque في الشكل المعروض على الجانب الأيمن من الصفحة.
دائرة الجامع كاملة
إعلان فئة ArrayDeque
دعونا نرى الإعلان عن فئة java.util.ArrayDeque.
public class ArrayDeque extends AbstractCollection implements Deque, Cloneable, Serializable
مثال جافا 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: Book
اسم الملف: 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