[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: أساسيات اللغة Java Basics
صفحة 1 من اصل 1 • شاطر
[Java]التعامل مع واجهة قوائم الانتظار Java Queue Interface
اهلا بكم في هذا المقال التعليمي ، سنتعرف على واجهة قائمة الانتظار #Queue وطرقها وكيفية استخدامها
اولا: مفهوم قائمة الانتظلر #Queue
واجهة Java Queue عبارة عن بنية بيانات تتيح لك إدراج العناصر في قائمة مرتبة خطيًا تتبع مبدء First-In-First-Out فى ترتيب العناصر. هذا يعني أن العنصر الذي تم إدراجه أولاً في قائمة الانتظار سيكون العنصر الأول المراد إزالته.
ثانيا :الفئات التي تتطبق قائمة الانتظار #Queue
نظرًا لأن قائمة الانتظار هي عبارة عن واجهة #Interface، فلا يمكننا توفير التنفيذ المباشر لها.لذلك من أجل استخدام وظائف قائمة الانتظار#Queue ، نحتاج إلى استخدام الفئات التي تنفذها التالية :
يتم أيضًا توسيع واجهة قائمة الانتظار #Queue بواسطة واجهات فرعية مختلفة:
ثالثا :كيفية استخدام قائمة الانتظار #Queue
حتى نستطيع إستخدام قائمة الانتظار فى تطبيقات الجافا ، يجب علينا استيراد حزمة java.util.Queue ثم بعد ذلك تنفيذ احدى الفئات التى تطبق واجهة قائمة الانتظار على النحو التالى :
فى الشفرة اعلاه قمنا بإنشاء كائنات animal1, animal2 , animal3 من فئات #LinkedList و #ArrayDeque و #PriorityQueue على التوالي. ,و بهذا يمكن لهذه الكائنات استخدام وظائف واجهة قائمة الانتظار #Queue التالية :
أمثلة توضيحية :
1_تنفيذ واجهة قائمة الانتظار #Queue بإستخدام الفئة #LinkedList
2_تنفيذ واجهة قائمة الانتظار #Queue بإستخدام الفئة #PriorityQueue
اولا: مفهوم قائمة الانتظلر #Queue
واجهة Java Queue عبارة عن بنية بيانات تتيح لك إدراج العناصر في قائمة مرتبة خطيًا تتبع مبدء First-In-First-Out فى ترتيب العناصر. هذا يعني أن العنصر الذي تم إدراجه أولاً في قائمة الانتظار سيكون العنصر الأول المراد إزالته.
ثانيا :الفئات التي تتطبق قائمة الانتظار #Queue
نظرًا لأن قائمة الانتظار هي عبارة عن واجهة #Interface، فلا يمكننا توفير التنفيذ المباشر لها.لذلك من أجل استخدام وظائف قائمة الانتظار#Queue ، نحتاج إلى استخدام الفئات التي تنفذها التالية :
- ArrayDeque
- LinkedList
- PriorityQueue
يتم أيضًا توسيع واجهة قائمة الانتظار #Queue بواسطة واجهات فرعية مختلفة:
- Deque
- BlockingQueue
- BlockingDeque
ثالثا :كيفية استخدام قائمة الانتظار #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]
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: أساسيات اللغة Java Basics
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 1:38 pm من طرف moslema_r
» تصميم تطبيق جوال لمغسلة ملابس
الخميس سبتمبر 05, 2024 7:22 am من طرف mona mohamed
» تصميم تطبيق جوال لشركة عقارات
الأربعاء سبتمبر 04, 2024 11:34 am من طرف mona mohamed
» شركة مكافحة النمل الابيض بالرياض
الثلاثاء سبتمبر 03, 2024 7:04 pm من طرف moslema_r
» تصميم تطبيق جوال لنقل الاثاث
الإثنين سبتمبر 02, 2024 12:08 pm من طرف mona mohamed
» هناجر
السبت أغسطس 31, 2024 7:25 pm من طرف moslema_r
» تصميم تطبيق جوال لمتجر ورد
الخميس أغسطس 29, 2024 7:16 am من طرف mona mohamed
» تصميم تطبيق جوال لسلسلة مطاعم
الثلاثاء أغسطس 27, 2024 7:42 am من طرف mona mohamed
» تصميم تطبيق جوال لتوصيل الطلبات
الأحد أغسطس 25, 2024 7:38 am من طرف mona mohamed
» مظلات سيارات متحركة
الخميس أغسطس 22, 2024 8:30 pm من طرف moslema_r