Deque في جافا



صف مزدوج الذيل Java‏

واجهة Deque في Java

Deque في Java هي واجهة تمد امتداد طابور واجهه المستخدم. إنها تعني قائمة الانتظار المزدوجة مما يعني أنه يمكننا إدراج وحذف العناصر من كلا الجانبين. وهو يدعم كلاً من تنفيذ قائمة الانتظار وهو First-In-First-Out (FIFO) وتنفيذ المكدس وهو Last-In-First-Out (LIFO). ديكي الواجهة وهو جزء من برنامج java.util صفقة وينتمي إلى المجموعة الإطار.

التسلسل الهرمي Deque

Deque في جافا

ميزات Deque في Java

  • تنفذ Deque في Java كلاً من FIFO و LIFO
  • إنها مجموعة قابلة لتغيير الحجم ديناميكيًا
  • لا يمكننا تخزين القيم الخالية في Deque
  • انها ليست موضوع آمن بشكل افتراضي.

Deque في جافا

الفئات التي تقوم بتطبيق واجهة Deque في Java

فيما يلي الفئات التي تستخدم واجهة Deque:

  • لينكدليست:
    Deque<Type> d = new LinkedList<Type>();
  • ArrayDeque:
    Deque<Type> d = new ArrayDeque<Type>();
    

     

طرق Deque في جافا

خدمة التوصيلالوصفمعامل
إضافة منطقية (العنصر هـ)يضيف العنصر المحدد إلى نهاية السدادة. هـ - العنصر المراد إضافته.
إرجاع القيمة - صحيح
Boolean addAll (مجموعة c)يضيف مجموعة من العناصر المحددة إلى deque.ج - جمع العناصر المراد إضافتها
قيمة الإرجاع - صحيح
إضافة باطلة (العنصر هـ)يُدرج عنصرًا في بداية السدهـ - العنصر المراد إدراجه
addLast باطل (العنصر هـ)يُدرج عنصرًا في نهاية السدهـ - العنصر المراد إدراجه
باطل واضح ()يزيل كل العناصر الموجودة في قفص الاتهام.
يحتوي منطقي على (كائن o)للتحقق مما إذا كانت deque تحتوي على العنصر المحددإرجاع القيمة - صحيح إذا احتوت deque على العنصر
Boolean يحتوي على All (Collection c)للتحقق مما إذا كان deque يحتوي على جميع العناصر في المجموعةقيمة الإرجاع - صحيحة إذا كانت deque تحتوي على جميع العناصر
التكرار التنازليتُرجع مكررًا فوق العناصر الموجودة في deque بالترتيب العكسي
عنصر الكائن ()إرجاع العنصر الأول (الرأس) في deque
قيمة منطقية (كائن o)يقارن إذا كان deque يحتوي على جميع العناصر المحددة بالترتيب الدقيقإرجاع القيمة - صحيح إذا كانت عناصر الكائن تتطابق مع deque
الكائن getFirst ()إرجاع العنصر الأول (الرأس) في deque
كائن getLast ()إرجاع العنصر الأخير (الذيل) في deque
قيمة المنطقية فارغة ()للتحقق مما إذا كانت السدادة فارغة أم لاقيمة الإرجاع - صحيحة إذا كانت deque لا تحتوي على قيم
مكرر التكرار ()يسترجع مكرر deque بالتسلسلقيمة الإرجاع - التكرار
العرض المنطقي (الكائن هـ)يُدرج العنصر كذيله - عنصر يضاف
العرض المنطقي: First (Object e)يُدرج العنصر في مقدمة الدعامةه - عنصر يضاف
العرض المنطقي الأخير (كائن هـ)يُدرج العنصر في نهاية السده - عنصر يضاف
نظرة خاطفة على الكائن ()يسترجع العنصر الأول من deque (الرأس)ترجع القيمة فارغة إذا كانت الدق فارغة
نظرة خاطفة على الكائنيسترجع العنصر الأول من deque (الرأس)ترجع القيمة فارغة إذا كانت الدق فارغة
نظرة خاطفة على الكائن الأخير ()يسترجع العنصر الأخير من deque (الذيل)ترجع القيمة فارغة إذا كانت الدق فارغة
استطلاع كائن ()يسترجع ويزيل العنصر الأول من deque (الرأس)ترجع القيمة فارغة إذا كانت الدق فارغة
استطلاع الكائن First ()يسترجع ويزيل العنصر الأول من deque (الرأس)ترجع القيمة فارغة إذا كانت الدق فارغة
استطلاع كائن آخر ()يسترجع ويزيل العنصر الأخير من الذيل (الذيل)ترجع القيمة فارغة إذا كانت الدق فارغة
كائن البوب ​​()يسترجع العنصر الأول أو يزيله من حزمة deque
دفع باطل (كائن هـ)يُدرج العنصر في مقدمة الدعامةهـ - العنصر المراد إضافته
إزالة الكائن ()يزيل العنصر الأول من deque
إزالة منطقية (كائن o)يزيل التواجد الأول للكائن المحدد من deque إذا كان موجودًاo - العنصر المراد إزالته
قيمة الإرجاع - صحيحة إذا كانت deque تحتوي على العنصر
Boolean removeAll (مجموعة ج)يزيل التواجد الأول لجميع العناصر في المجموعة من deque إذا كان موجودًاج - جمع العناصر
قيمة الإرجاع - صحيحة إذا احتوت deque على المجموعة
إزالة الكائن First ()يزيل العنصر الأول من deque
Boolean removeFirstOccurence (Object e)يزيل التواجد الأول للعنصر المحدد في dequeهـ - العنصر المراد إزالته
إزالة الكائن Last ()يزيل العنصر الأخير من deque
Boolean removeLastOccurence (Object e)يزيل آخر تواجد للعنصر المحدد من dequeهـ - العنصر المراد إزالته
Boolean retainAll (مجموعة ج)يحتفظ بجميع العناصر المحددة في المجموعة في deque. ستتم إزالة العناصر الأخرىج - مجموعة العناصر التي يجب الاحتفاظ بها
قيمة الإرجاع - صحيحة إذا تغيرت deque بسبب الطريقة التي تسمى
حجم int ()يجلب حجم ديكويقيمة الإرجاع - حجم deque
كائن [] toArray ()ترجع مصفوفة من العناصر بالتسلسل الصحيحقيمة الإرجاع - صفيف لجميع العناصر في deque بالتسلسل الصحيح
سلسلة toString ()إرجاع تمثيل سلسلة لمجموعة العناصرقيمة الإرجاع - سلسلة من عناصر المصفوفة مفصولة بفاصلة ومسافة ومحاطة بداخل []

مثال: أدخل العناصر في Deque

في Java ، هناك عدة طرق لإدراج العناصر في deque. يوضح المثال أدناه كيفية إدراج العناصر باستخدام جميع الطرق. تقوم الطريقتان add () و offer () بإدراج العناصر بالترتيب العادي. تُدرج طرق addFirst () و offerFirst () و push () قيمة إلى أول deque. باستخدام التابعين addLast () و offerLast () ، يمكننا إدراج عناصر في نهاية deque. لإضافة مجموعة من العناصر ، يمكننا استخدام طريقة addAll ().

import java.util.Deque;
import java.util.LinkedList;

public class InsertDequeElements {

  public static void main(String[] args) {
    Deque<String> d = new LinkedList<String>();
    d.add("C");
    d.addFirst("C++");
    d.addLast("Java");
    
    System.out.println("Elements in the Deque after add, addFirst and addLast: " + d);
    
    Deque<String> dq = new LinkedList<String>();
    dq.add("JavaScript");
    dq.add("Python");
    
    d.addAll(dq);
    
    System.out.println("Elements in the Deque after addAll: " + d);
    
    d.offer(".Net");
    d.offerFirst("C#");
    d.offerLast("VBScript");
    
    System.out.println("Elements in the Deque after offer, offerFirst and offerLast: " + d);
    
    d.push("HTML");
    
    System.out.println("Elements in the Deque after push: " + d);

  }

}

مثال: حذف العناصر من Deque

على غرار عمليات الإضافة المختلفة ، يدعم deque في Java العديد من عمليات الحذف أيضًا والتي تم تفصيلها في المثال أدناه. تقوم الطريقتان remove () و poll () بحذف العنصر من بداية deque. تزيل طرق removeFirst () و pollFirst () و pop () العنصر الأول. لإزالة العنصر الأخير ، يمكننا استخدام التابعين removeLast () و pollLast (). يمكننا أيضًا إزالة مجموعة من العناصر باستخدام طريقة removeAll (). أسلوب retainAll () يحتفظ فقط بمجموعة العناصر ويحذف العناصر الأخرى من deque.

import java.util.ArrayDeque;
import java.util.Deque;

public class DeleteDequeElements {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    d.add(40);
    d.add(200);
    d.add(300);
    
    Deque<Integer> dq = new ArrayDeque<Integer>();
    dq.add(70);
    dq.add(60);
    dq.add(80);
    dq.add(90);
    dq.add(100);
    
    d.addAll(dq);
    
    System.out.println("Elements in the Deque: " + d);
    
    d.remove();
    d.remove(50);
    
    System.out.println("Elements after remove: " + d);
    
    d.removeFirst();
    d.removeLast();
    
    System.out.println("Elements after removeFirst and removeLast: " + d);
    
    d.poll();
    d.pollFirst();
    d.pollLast();
    
    System.out.println("Elements after poll, pollFirst and pollLast: " + d);

    d.pop();
    System.out.println("Elements after pop: " + d);
    
    d.retainAll(dq);
    System.out.println("Elements after retainAll: " + d);
    
    d.removeAll(dq);
    System.out.println("Elements after removeAll: " + d);
  }

}
Elements in the Deque: [30, 20, 10, 50, 40, 200, 300, 70, 60, 80, 90, 100]
Elements after remove: [20, 10, 40, 200, 300, 70, 60, 80, 90, 100]
Elements after removeFirst and removeLast: [10, 40, 200, 300, 70, 60, 80, 90]
Elements after poll, pollFirst and pollLast: [200, 300, 70, 60, 80]
Elements after pop: [300, 70, 60, 80]
Elements after retainAll: [70, 60, 80]
Elements after removeAll: []

مثال: استرجع العناصر من Deque

يوضح المثال أدناه كيفية التحقق من وجود عنصر واسترداد عناصر الرأس والذيل من Deque في Java. للتحقق من وجود القيمة ، يمكننا استخدام طريقة contains () و containsAll (). يمكننا استرداد عنصر الرأس باستخدام طرق العنصر () و peek () و peekFirst () و getFirst () بينما لاسترداد عنصر الذيل ، يمكننا استخدام أساليب getLast () و peekLast ().

import java.util.ArrayDeque;
import java.util.Deque;

public class RetrieveDequeElements {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    d.add(40);
    d.add(60);
    d.add(70);
    
    Deque<Integer> dq = new ArrayDeque<Integer>();
    dq.add(80);
    dq.add(90);
    
    d.addAll(dq);
    
    System.out.println(d);
    System.out.println(d.contains(10));
    System.out.println(d.contains(200));
    System.out.println(d.containsAll(dq));
    
    System.out.println("Output of element: " + d.element());
    System.out.println("Get first element using getFirst: " + d.getFirst());
    System.out.println("Get last element using getLast: " + d.getLast());
    System.out.println("Output of peek: " + d.peek());
    System.out.println("Get first element using peekFirst: " + d.peekFirst());
    System.out.println("Get last element using peekLast: " + d.peekLast());

  }

}
[30, 20, 10, 50, 40, 60, 70, 80, 90]
true
false
true
Output of element: 30
Get first element using getFirst: 30
Get last element using getLast: 90
Output of peek: 30
Get first element using peekFirst: 30
Get last element using peekLast: 90

مثال: امسح Deque وتحقق مما إذا كانت فارغة

يوضح المثال أدناه كيفية مسح deque عن طريق إزالة جميع العناصر باستخدام طريقة clear (). يمكننا أيضًا التحقق مما إذا كانت deque فارغة باستخدام طريقة isEmpty ().

import java.util.ArrayDeque;
import java.util.Deque;

public class ClearDeque {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    
    System.out.println("Is Empty: " + d.isEmpty());
    d.clear();
    System.out.println("Is Empty after clear: " + d.isEmpty());

  }

}
Is Empty: false
Is Empty after clear: true

مثال: كرر العناصر في Deque

بشكل افتراضي ، يمكننا التكرار من خلال العناصر الموجودة في deque باستخدام طريقة iterator () التي تُرجع العناصر في نفس التسلسل. لاسترداد القيم بالترتيب التنازلي الذي تم إدخالها به ، يمكننا استخدام طريقة descendingIterator ().

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;

public class IterateDeque {

  public static void main(String[] args) {
    Deque<Integer> d = new ArrayDeque<Integer>();
    d.add(30);
    d.add(20);
    d.add(10);
    d.add(50);
    d.add(40);
    
    System.out.println("Iterate using iterator:");
    Iterator<Integer> i = d.iterator();
    while(i.hasNext())
      System.out.println(i.next());
    
    System.out.println("Iterate using descendingIterator:");
    Iterator<Integer> di = d.descendingIterator();
    while(di.hasNext())
      System.out.println(di.next());

  }

}
Iterate using iterator:
30
20
10
50
40
Iterate using descendingIterator:
40
50
10
20
30

مثال: تحويل Deque إلى Array

في المثال أدناه ، نقوم بتحويل deque إلى تمثيل مصفوفة باستخدام طريقة toArray (). بهذه الطريقة ، يمكننا الوصول إلى القيم بناءً على فهرس المصفوفة.

import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;

public class ConvertDequeToArray {

  public static void main(String[] args) {
    Deque<String> d = new ArrayDeque<String>();
    d.add("James");
    d.add("John");
    d.add("Xavior");
    d.add("Thomas");
    
    String[] arr = d.toArray(new String[d.size()]);
    System.out.println(Arrays.deepToString(arr));
    
    System.out.println("Value at index 2: "+ arr[2]);

  }

}
[James, John, Xavior, Thomas]
Value at index 2: Xavior

 

الرقم المرجعي