logo

المجموعات في جافا

  1. إطار مجموعة جافا
  2. التسلسل الهرمي لإطار المجموعة
  3. واجهة التجميع
  4. واجهة التكرار

ال جمع في جافا هو إطار عمل يوفر بنية لتخزين ومعالجة مجموعة الكائنات.

يمكن لمجموعات Java تحقيق جميع العمليات التي تقوم بها على البيانات مثل البحث والفرز والإدراج والمعالجة والحذف.

مجموعة Java تعني وحدة واحدة من الكائنات. يوفر إطار مجموعة Java العديد من الواجهات (Set، List، Queue، Deque) والفئات ( ArrayList ، المتجه، قائمة مرتبطة , طابور الأولوية ، HashSet، LinkedHashSet، TreeSet).

ما هو التجميع في جافا

تمثل المجموعة وحدة واحدة من الكائنات، أي مجموعة.

ما هو الإطار في جافا

  • ويوفر الهندسة المعمارية الجاهزة.
  • وهو يمثل مجموعة من الفئات والواجهات.
  • إنه اختياري.

ما هو إطار التجميع

يمثل إطار المجموعة بنية موحدة لتخزين ومعالجة مجموعة من الكائنات. لديها:

  1. الواجهات وتطبيقاتها، أي الفئات
  2. خوارزمية

هل تعرف؟
  • ما الطريقتان لتكرار عناصر المجموعة؟
  • ما الفرق بين فئات ArrayList و LinkedList في إطار عمل المجموعة؟
  • ما الفرق بين فئات ArrayList وVector في إطار المجموعة؟
  • ما الفرق بين فئات HashSet وHashMap في إطار المجموعة؟
  • ما الفرق بين فئة HashMap وHashtable؟
  • ما الفرق بين واجهة Iterator وEnumeration في إطار المجموعة؟
  • كيف يمكننا فرز عناصر الكائن؟ ما هو الفرق بين الواجهات القابلة للمقارنة والمقارنة؟
  • ماذا تفعل طريقة hashcode ()؟
  • ما الفرق بين مجموعة Java ومجموعات Java؟

التسلسل الهرمي لإطار المجموعة

دعونا نرى التسلسل الهرمي لإطار المجموعة. ال java.util تحتوي الحزمة على كافة الطبقات و واجهات لإطار التجميع.

التسلسل الهرمي لإطار مجموعة Java

طرق واجهة التحصيل

هناك العديد من الطرق المعلنة في واجهة المجموعة. وهم على النحو التالي:

لا.طريقةوصف
1إضافة منطقية عامة (E e)يتم استخدامه لإدراج عنصر في هذه المجموعة.
2إضافة منطقية عامة (المجموعة ج)يتم استخدامه لإدراج عناصر المجموعة المحددة في مجموعة الاستدعاء.
3إزالة منطقية عامة (عنصر الكائن)يتم استخدامه لحذف عنصر من المجموعة.
4إزالة الكل المنطقية العامة (المجموعة ج)يتم استخدامه لحذف كافة عناصر المجموعة المحددة من مجموعة الاستدعاء.
5إزالة منطقية افتراضية (مرشح المسند)يتم استخدامه لحذف كافة عناصر المجموعة التي تلبي المسند المحدد.
6الاحتفاظ المنطقي العام بالكل (المجموعة ج)يتم استخدامه لحذف جميع عناصر استدعاء المجموعة باستثناء المجموعة المحددة.
7حجم int العام ()تقوم بإرجاع العدد الإجمالي للعناصر في المجموعة.
8الفراغ العام واضح ()يقوم بإزالة العدد الإجمالي للعناصر من المجموعة.
9المنطقية العامة تحتوي على (عنصر الكائن)يتم استخدامه للبحث عن عنصر.
10المنطقية العامة تحتوي على الكل (المجموعة ج)يتم استخدامه للبحث في المجموعة المحددة في المجموعة.
أحد عشرمكرر عام مكرر ()يقوم بإرجاع مكرر.
12الكائن العام[] toArray()يقوم بتحويل المجموعة إلى صفيف.
13T[] toArray(T[] أ) العامةيقوم بتحويل المجموعة إلى صفيف. هنا، نوع وقت تشغيل المصفوفة التي تم إرجاعها هو نوع المصفوفة المحددة.
14المنطقية العامة فارغة ()يتحقق مما إذا كانت المجموعة فارغة.
خمسة عشرالدفق المتوازي الافتراضي ()تقوم بإرجاع دفق متوازي محتمل مع المجموعة كمصدر لها.
16دفق الدفق الافتراضي ()تقوم بإرجاع دفق متسلسل مع المجموعة كمصدر لها.
17الفاصل الافتراضي ()يقوم بإنشاء Spliterator على العناصر المحددة في المجموعة.
18القيمة المنطقية العامة تساوي (عنصر الكائن)يطابق مجموعتين.
19رمز التجزئة العام ()يقوم بإرجاع رقم رمز التجزئة للمجموعة.

واجهة التكرار

توفر واجهة التكرار إمكانية تكرار العناصر في الاتجاه الأمامي فقط.

طرق واجهة التكرار

توجد ثلاث طرق فقط في واجهة Iterator. هم:

لا.طريقةوصف
1المنطقية العامة hasNext()يُرجع صحيحًا إذا كان المكرِّر يحتوي على المزيد من العناصر وإلا فإنه يُرجع خطأ.
2الكائن العام التالي ()يقوم بإرجاع العنصر ويحرك مؤشر المؤشر إلى العنصر التالي.
3إزالة الفراغ العام ()يقوم بإزالة العناصر الأخيرة التي أرجعها المكرر. إنه أقل استخدامًا.

واجهة قابلة للتكرار

الواجهة القابلة للتكرار هي الواجهة الجذرية لجميع فئات المجموعة. تعمل واجهة المجموعة على توسيع الواجهة القابلة للتكرار، وبالتالي فإن جميع الفئات الفرعية لواجهة المجموعة تقوم أيضًا بتنفيذ الواجهة القابلة للتكرار.

أنه يحتوي على طريقة مجردة واحدة فقط. أي.،

 Iterator iterator() 

تقوم بإرجاع المكرر فوق عناصر النوع T.

نظرية الأتمتة

واجهة المجموعة

واجهة المجموعة هي الواجهة التي يتم تنفيذها بواسطة جميع الفئات في إطار عمل المجموعة. ويعلن عن الأساليب التي سيكون لها كل مجموعة. بمعنى آخر، يمكننا القول أن واجهة المجموعة تبني الأساس الذي يعتمد عليه إطار عمل المجموعة.

بعض طرق واجهة التجميع هي Boolean add (Object obj)، Boolean addAll (Collection c)، void Clear()، وما إلى ذلك والتي يتم تنفيذها بواسطة جميع الفئات الفرعية لواجهة Collection.


واجهة القائمة

واجهة القائمة هي الواجهة الفرعية لواجهة المجموعة. إنه يمنع بنية بيانات نوع القائمة التي يمكننا من خلالها تخزين المجموعة المرتبة من الكائنات. يمكن أن يكون لها قيم مكررة.

يتم تنفيذ واجهة القائمة من خلال فئات ArrayList وLinkedList وVector وStack.

لإنشاء مثيل لواجهة القائمة، يجب علينا استخدام:

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

توجد طرق مختلفة في واجهة القائمة يمكن استخدامها لإدراج العناصر من القائمة وحذفها والوصول إليها.

الفئات التي تطبق واجهة القائمة مذكورة أدناه.


ArrayList

تطبق فئة ArrayList واجهة القائمة. يستخدم مصفوفة ديناميكية لتخزين العنصر المكرر لأنواع البيانات المختلفة. تحافظ فئة ArrayList على ترتيب الإدراج وهي غير متزامنة. يمكن الوصول إلى العناصر المخزنة في فئة ArrayList بشكل عشوائي. النظر في المثال التالي.

 import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Ravi Vijay Ravi Ajay 

قائمة مرتبطة

يقوم LinkedList بتنفيذ واجهة المجموعة. ويستخدم قائمة مرتبطة بشكل مضاعف داخليًا لتخزين العناصر. يمكنه تخزين العناصر المكررة. يحافظ على ترتيب الإدراج ولا تتم مزامنته. في LinkedList، تكون المعالجة سريعة لأنه لا يلزم إجراء أي تغيير.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Ravi Vijay Ravi Ajay 

المتجه

يستخدم Vector مصفوفة ديناميكية لتخزين عناصر البيانات. إنه مشابه لـ ArrayList. ومع ذلك، فهو متزامن ويحتوي على العديد من الأساليب التي ليست جزءًا من إطار عمل المجموعة.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Ayush Amit Ashish Garima 

كومة

المكدس هو فئة فرعية من Vector. وهو يطبق بنية بيانات 'آخر ما يدخل أولاً يخرج أولاً'، أي Stack. تحتوي المكدس على جميع أساليب فئة Vector وتوفر أيضًا أساليبها مثل boolean Push() وboolean peek() وboolean Push(object o) التي تحدد خصائصها.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Ayush Garvit Amit Ashish 

واجهة قائمة الانتظار

تحافظ واجهة قائمة الانتظار على ترتيب الوارد أولاً يخرج أولاً. يمكن تعريفها على أنها قائمة مرتبة تُستخدم للاحتفاظ بالعناصر التي على وشك المعالجة. هناك فئات مختلفة مثل PriorityQueue وDeque وArrayDeque التي تنفذ واجهة قائمة الانتظار.

يمكن إنشاء واجهة قائمة الانتظار على النحو التالي:

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

هناك العديد من الفئات التي تنفذ واجهة قائمة الانتظار، بعضها موضح أدناه.


طابور الأولوية

تطبق فئة PriorityQueue واجهة قائمة الانتظار. فهو يحتوي على العناصر أو الكائنات التي سيتم معالجتها حسب أولوياتها. لا تسمح PriorityQueue بتخزين القيم الخالية في قائمة الانتظار.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } } 

انتاج:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

والواجهة

تعمل واجهة Deque على توسيع واجهة قائمة الانتظار. في Deque، يمكننا إزالة وإضافة العناصر من كلا الجانبين. يرمز Deque إلى قائمة انتظار ذات نهاية مزدوجة تمكننا من تنفيذ العمليات في كلا الطرفين.

يمكن إنشاء مثيل Deque على النحو التالي:

 Deque d = new ArrayDeque(); 

ArrayDeque

تطبق فئة ArrayDeque واجهة Deque. إنه يسهل علينا استخدام Deque. على عكس قائمة الانتظار، يمكننا إضافة أو حذف العناصر من كلا الطرفين.

ArrayDeque أسرع من ArrayList وStack وليس له أي قيود على السعة.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } } 

انتاج:

 Gautam Karan Ajay 

ضبط الواجهة

تعيين الواجهة في Java موجود في حزمة java.util. يعمل على توسيع واجهة المجموعة. إنه يمثل مجموعة غير مرتبة من العناصر التي لا تسمح لنا بتخزين العناصر المكررة. يمكننا تخزين قيمة فارغة واحدة على الأكثر في Set. يتم تنفيذ المجموعة بواسطة HashSet وLinkedHashSet وTreeSet.

يمكن إنشاء مثيل للمجموعة على النحو التالي:

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

HashSet

تطبق فئة HashSet Set Interface. إنه يمثل المجموعة التي تستخدم جدول التجزئة للتخزين. يتم استخدام التجزئة لتخزين العناصر في HashSet. أنه يحتوي على عناصر فريدة من نوعها.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Vijay Ravi Ajay 

LinkedHashSet

تمثل فئة LinkedHashSet تطبيق LinkedList لواجهة Set. يقوم بتوسيع فئة HashSet وتنفيذ واجهة Set. مثل HashSet، فهو يحتوي أيضًا على عناصر فريدة. يحافظ على ترتيب الإدراج ويسمح بالعناصر الفارغة.

النظر في المثال التالي.

 import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Ravi Vijay Ajay 

واجهة SortedSet

SortedSet هو البديل لواجهة Set التي توفر ترتيبًا كاملاً لعناصرها. يتم ترتيب عناصر SortedSet بترتيب تصاعدي (تصاعدي). يوفر SortedSet الطرق الإضافية التي تمنع الترتيب الطبيعي للعناصر.

يمكن إنشاء مثيل SortedSet على النحو التالي:

 SortedSet set = new TreeSet(); 

TreeSet

تطبق فئة Java TreeSet واجهة Set التي تستخدم شجرة للتخزين. مثل HashSet، يحتوي TreeSet أيضًا على عناصر فريدة. ومع ذلك، فإن وقت الوصول إلى TreeSet واسترجاعه سريع جدًا. العناصر الموجودة في TreeSet مخزنة بترتيب تصاعدي.

خذ بعين الاعتبار المثال التالي:

 import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

انتاج:

 Ajay Ravi Vijay 
ما الذي سنتعلمه في Java Collections Framework
  1. فئة قائمة المصفوفات
  2. فئة القائمة المرتبطة
  3. واجهة القائمة
  4. فئة HashSet
  5. فئة LinkedHashSet
  6. فئة TreeSet
  7. فئة قائمة الانتظار ذات الأولوية
  8. واجهة الخريطة
  9. فئة HashMap
  10. فئة LinkedHashMap
  11. فئة TreeMap
  12. فئة هاشتابل
  13. فرز
  14. واجهة قابلة للمقارنة
  15. واجهة المقارنة
  16. فئة الخصائص في جافا