منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface

اذهب الى الأسفل

[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface Empty [Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface

مُساهمة من طرف أحمد مناع في الجمعة ديسمبر 25, 2020 7:56 am

اهلا بكم في هذا المقال التعليمي ، سنتعرف على واجهة قائمة الانتظار #Queue وطرقها وكيفية استخدامها 

اولا: مفهوم قائمة الانتظلر #Queue

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

[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface Queue-implementation

ثانيا :الفئات التي تتطبق قائمة الانتظار #Queue

نظرًا لأن قائمة الانتظار هي عبارة عن واجهة #Interface، فلا يمكننا توفير التنفيذ المباشر لها.لذلك من أجل استخدام وظائف قائمة الانتظار#Queue ، نحتاج إلى استخدام الفئات التي تنفذها التالية :



  • ArrayDeque
  • LinkedList
  • PriorityQueue


[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface Queue-interface

يتم أيضًا توسيع واجهة قائمة الانتظار #Queue  بواسطة واجهات فرعية مختلفة:



  • Deque
  • BlockingQueue
  • BlockingDeque


[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface Queue-subinterfaces

ثالثا :كيفية استخدام قائمة الانتظار #Queue

حتى نستطيع إستخدام قائمة الانتظار فى تطبيقات الجافا ، يجب علينا استيراد حزمة java.util.Queue ثم بعد ذلك تنفيذ احدى الفئات التى تطبق واجهة قائمة الانتظار على النحو التالى :

الكود:
// LinkedList implementation of Queue
Queue<String> animal1 = new LinkedList<>();

// Array implementation of Queue
Queue<String> animal2 = new ArrayDeque<>();

// Priority Queue implementation of Queue
Queue<String> animal 3 = new PriorityQueue<>();

فى الشفرة اعلاه قمنا بإنشاء كائنات animal1, animal2 , animal3 من فئات #LinkedList و #ArrayDeque و #PriorityQueue على التوالي. ,و بهذا يمكن لهذه الكائنات استخدام وظائف واجهة قائمة الانتظار #Queue التالية :


  • add() - إدراج العنصر المحدد في قائمة الانتظار. إذا نجحت المهمة ، ترجع الدالة add () إلى القيمة true ، وإذا لم تكن كذلك ، فإنها تطرح استثناءً
  • offer() - يُدرج العنصر المحدد في قائمة الانتظار. إذا نجحت المهمة ، فإن offer () ترجع صوابًا ، وإلا فإنها ترجع خطأ
  • element() - إرجاع رأس قائمة الانتظار. يطرح استثناء إذا كانت قائمة الانتظار فارغة.
  • peek()- إرجاع رأس قائمة الانتظار. ترجع فارغة إذا كانت قائمة الانتظار فارغة.
  • remove()- إرجاع وإزالة رأس قائمة الانتظار. يطرح استثناء إذا كانت قائمة الانتظار فارغة.
  • poll()- إرجاع رأس قائمة الانتظار وإزالته. ترجع فارغة إذا كانت قائمة الانتظار فارغة.


أمثلة توضيحية :

1_تنفيذ واجهة قائمة الانتظار #Queue بإستخدام الفئة #LinkedList

الكود:
import java.util.Queue;
import java.util.LinkedList;

class Main {

    public static void main(String[] args) {
        // Creating Queue using the LinkedList class
        Queue<Integer> numbers = new LinkedList<>();

        // offer elements to the Queue
        numbers.offer(1);
        numbers.offer(2);
        numbers.offer(3);
        System.out.println("Queue: " + numbers);

        // Access elements of the Queue
        int accessedNumber = numbers.peek();
        System.out.println("Accessed Element: " + accessedNumber);

        // Remove elements from the Queue
        int removedNumber = numbers.poll();
        System.out.println("Removed Element: " + removedNumber);

        System.out.println("Updated Queue: " + numbers);
    }
}

Output
الكود:

Queue: [1, 2, 3]
Accessed Element: 1
Removed Element: 1
Updated Queue: [2, 3]

2_تنفيذ واجهة قائمة الانتظار #Queue بإستخدام الفئة #PriorityQueue

الكود:
import java.util.Queue;
import java.util.PriorityQueue;

class Main {

    public static void main(String[] args) {
        // Creating Queue using the PriorityQueue class
        Queue<Integer> numbers = new PriorityQueue<>();

        // offer elements to the Queue
        numbers.offer(5);
        numbers.offer(1);
        numbers.offer(2);
        System.out.println("Queue: " + numbers);

        // Access elements of the Queue
        int accessedNumber = numbers.peek();
        System.out.println("Accessed Element: " + accessedNumber);

        // Remove elements from the Queue
        int removedNumber = numbers.poll();
        System.out.println("Removed Element: " + removedNumber);

        System.out.println("Updated Queue: " + numbers);
    }
}

Output
الكود:

Queue: [1, 5, 2]
Accessed Element: 1
Removed Element: 1
Updated Queue: [2, 5]


ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1066
النقاط : 201930
التقيم : 130
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى