ال جمع في جافا هو إطار عمل يوفر بنية لتخزين ومعالجة مجموعة الكائنات.
يمكن لمجموعات Java تحقيق جميع العمليات التي تقوم بها على البيانات مثل البحث والفرز والإدراج والمعالجة والحذف.
مجموعة Java تعني وحدة واحدة من الكائنات. يوفر إطار مجموعة Java العديد من الواجهات (Set، List، Queue، Deque) والفئات ( ArrayList ، المتجه، قائمة مرتبطة , طابور الأولوية ، HashSet، LinkedHashSet، TreeSet).
ما هو التجميع في جافا
تمثل المجموعة وحدة واحدة من الكائنات، أي مجموعة.
ما هو الإطار في جافا
- ويوفر الهندسة المعمارية الجاهزة.
- وهو يمثل مجموعة من الفئات والواجهات.
- إنه اختياري.
ما هو إطار التجميع
يمثل إطار المجموعة بنية موحدة لتخزين ومعالجة مجموعة من الكائنات. لديها:
- الواجهات وتطبيقاتها، أي الفئات
- خوارزمية
هل تعرف؟
- ما الطريقتان لتكرار عناصر المجموعة؟
- ما الفرق بين فئات ArrayList و LinkedList في إطار عمل المجموعة؟
- ما الفرق بين فئات ArrayList وVector في إطار المجموعة؟
- ما الفرق بين فئات HashSet وHashMap في إطار المجموعة؟
- ما الفرق بين فئة HashMap وHashtable؟
- ما الفرق بين واجهة Iterator وEnumeration في إطار المجموعة؟
- كيف يمكننا فرز عناصر الكائن؟ ما هو الفرق بين الواجهات القابلة للمقارنة والمقارنة؟
- ماذا تفعل طريقة hashcode ()؟
- ما الفرق بين مجموعة Java ومجموعات Java؟
التسلسل الهرمي لإطار المجموعة
دعونا نرى التسلسل الهرمي لإطار المجموعة. ال java.util تحتوي الحزمة على كافة الطبقات و واجهات لإطار التجميع.
طرق واجهة التحصيل
هناك العديد من الطرق المعلنة في واجهة المجموعة. وهم على النحو التالي:
لا. | طريقة | وصف |
---|---|---|
1 | إضافة منطقية عامة (E e) | يتم استخدامه لإدراج عنصر في هذه المجموعة. |
2 | إضافة منطقية عامة (المجموعة ج) | يتم استخدامه لإدراج عناصر المجموعة المحددة في مجموعة الاستدعاء. |
3 | إزالة منطقية عامة (عنصر الكائن) | يتم استخدامه لحذف عنصر من المجموعة. |
4 | إزالة الكل المنطقية العامة (المجموعة ج) | يتم استخدامه لحذف كافة عناصر المجموعة المحددة من مجموعة الاستدعاء. |
5 | إزالة منطقية افتراضية (مرشح المسند) | يتم استخدامه لحذف كافة عناصر المجموعة التي تلبي المسند المحدد. |
6 | الاحتفاظ المنطقي العام بالكل (المجموعة ج) | يتم استخدامه لحذف جميع عناصر استدعاء المجموعة باستثناء المجموعة المحددة. |
7 | حجم int العام () | تقوم بإرجاع العدد الإجمالي للعناصر في المجموعة. |
8 | الفراغ العام واضح () | يقوم بإزالة العدد الإجمالي للعناصر من المجموعة. |
9 | المنطقية العامة تحتوي على (عنصر الكائن) | يتم استخدامه للبحث عن عنصر. |
10 | المنطقية العامة تحتوي على الكل (المجموعة ج) | يتم استخدامه للبحث في المجموعة المحددة في المجموعة. |
أحد عشر | مكرر عام مكرر () | يقوم بإرجاع مكرر. |
12 | الكائن العام[] toArray() | يقوم بتحويل المجموعة إلى صفيف. |
13 | T[] 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
- فئة قائمة المصفوفات
- فئة القائمة المرتبطة
- واجهة القائمة
- فئة HashSet
- فئة LinkedHashSet
- فئة TreeSet
- فئة قائمة الانتظار ذات الأولوية
- واجهة الخريطة
- فئة HashMap
- فئة LinkedHashMap
- فئة TreeMap
- فئة هاشتابل
- فرز
- واجهة قابلة للمقارنة
- واجهة المقارنة
- فئة الخصائص في جافا