Que ما هو Java Collection Framework؟
إطار عمل Ans Java Collection عبارة عن مكتبة مدمجة قوية توفر مجموعة من التنفيذ الأمثل لهياكل البيانات والخوارزميات الأكثر استخدامًا. ويستخدم على نطاق واسع في بناء تطبيقات Java وحل تطوير البرامج في العالم الحقيقي التحديات.
ما هي مزايا إطار مجموعة Java؟
الإجابة بعض مزايا إطار مجموعة Java هي
واجهة قابلة للتكرار
تعد الواجهة القابلة للتكرار في Java مكونًا رئيسيًا في Collection Framework. إنها الواجهة الجذرية لجميع أنواع المجموعات التي يمكن تكرارها. يتيح تنفيذ الواجهة القابلة للتكرار أن يكون الكائن هدفًا لـ "حلقة لكل حلقة" (المعروفة أيضًا باسم حلقة for المحسنة).
كما أنه يوفر كائن مكرر يمكن استخدامه للتكرار الأمامي لجميع بنيات البيانات التي تنفذ هذه الواجهة القابلة للتكرار.
مثال لاستخدام كل حلقة (مُحسّن للحلقة)
داخليًا تنفذ ArrayList القائمة وتوسع واجهة القائمة واجهة المجموعة وتوسع واجهة المجموعة الواجهة القابلة للتكرار.
List
list.add("Java");//إضافة عنصر
list.add("Collections");//إضافة عنصر
list.add("Framework");//إضافة عنصر
لـ (عنصر السلسلة: قائمة) {// التكرار باستخدام حلقة for المحسنة
System.out.println(element);
مثال باستخدام كائن ITERABLE
Iterator
بينما (iterator.hasNext()) {
عنصر السلسلة = iterator.next();
System.out.println(element);
حتى نتمكن من إنشاء واجهة قابلة للتكرار مخصصة للتنفيذ وتجاوز الطريقة التالية، hasNext والإزالة. وهنا مثال على ذلك.
import java.util.Iterator; class CustomIterable implements Iterable{ private final int[] numbers = {1, 2, 3, 4, 5}; @Override public Iterator iterator() { return new Iterator () { private int index = 0; private int lastReturnedIndex = -1; @Override public boolean hasNext() { return index ملحوظة :
- التكرارات في Java سريعة الفشل. هذا يعني أنه إذا تم تعديل المجموعة أثناء التكرار (باستثناء طريقة الإزالة () الخاصة بالمكرر)، فإنها ستطرح استثناء ConcurrentModificationException.
- يمكن لطريقة الإزالة () إزالة العناصر فقط، ويجب استدعاؤها مرة واحدة فقط لكل استدعاء للتالي (). وإلا فإنه سيتم طرح IllegalStateException.
واجهة المجموعة
هذه هي الواجهة التي من خلالها تصبح هياكل البيانات والتطبيقات الداخلية مرنة. تقوم جميع الفئات بشكل رئيسي بتنفيذ هذه الواجهة بشكل غير مباشر مما يسمح بتغيير التنفيذ بمجرد تغيير الكائن المخصص لمرجع المجموعة الخاص به.
//ArrayList Collectionc = new ArrayList(): c.add(1); c.add(2); c.contains(1); Collection c1 = new LinkedList(): c1.addAll(c);//Array added to a linked list /*What if i dont want arraylist but now i want a priority queue for applying efficient algorithms such as findmax and find min*/ //Just Change Object - SIMPLE! Collection c = new **PriorityQueue**(): c.add(1); c.add(2); c.contains(1); طرق واجهة التجميع
- int size : إرجاع حجم المجموعة.
- منطقية فارغة: إرجاع صحيح إذا كانت المجموعة فارغة.
- منطقي يحتوي على (Object o) : يُرجع صحيحًا إذا كان الكائن o موجودًا في المجموعة.
- Iterator
iterator() : إرجاع مكرر يشير إلى مجموعة. - Object[] toArray() : يغطي مجموعة لمصفوفة من نوع الكائن.
T[] toArray(T[] a) : إرجاع مصفوفة تحتوي على جميع عناصر المجموعة؛ نوع وقت تشغيل المصفوفة التي تم إرجاعها هو نوع المصفوفة المحددة. - إضافة منطقية (E e) : إضافة العنصر e إلى المجموعة. يُرجع صحيحًا إذا كانت العملية ناجحة.
- إزالة منطقية (Object o) : إزالة كائن o من المجموعة. يُرجع صحيحًا إذا كانت العملية ناجحة.
- boolean يحتوي على All(Collection> c) : يُرجع صحيحًا إذا كانت جميع العناصر في كلتا المجموعتين متماثلة. يعود صحيحا إذا كانت العملية ناجحة. 10.boolean addAll(Collection Extends E> c) : يضيف كل عناصر كلتا المجموعتين. يُرجع صحيحًا إذا كانت العملية ناجحة.
- boolean RemoveAll(Collection> c) : يزيل عنصر المجموعة c من مجموعة المتصل. يُرجع صحيحًا إذا كانت العملية ناجحة.
- boolean keepAll(Collection> c) : يحتفظ فقط بالعناصر الموجودة في المجموعة c.
- باطلة واضحة (): مسح كافة العناصر من المجموعة.
من خلال تنفيذ فئة المجموعة يمكننا تجاوز الطرق المذكورة أعلاه لإنشاء مجموعة مخصصة. وفيما يلي مثال لنفسه.
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.NoSuchElementException; public class CustomCollectionimplements Collection { private final ArrayList list = new ArrayList(); @Override public int size() { return list.size(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public boolean contains(Object o) { return list.contains(o); } @Override public Iterator iterator() { return new Iterator () { private int index = 0; @Override public boolean hasNext() { return index T[] toArray(T[] a) { return list.toArray(a); } @Override public boolean add(E e) { return list.add(e); } @Override public boolean remove(Object o) { return list.remove(o); } @Override public boolean containsAll(Collection> c) { return list.containsAll(c); } @Override public boolean addAll(Collection extends E> c) { return list.addAll(c); } @Override public boolean removeAll(Collection> c) { return list.removeAll(c); } @Override public boolean retainAll(Collection> c) { return list.retainAll(c); } @Override public void clear() { list.clear(); } } واجهة القائمة
تعد واجهة القائمة في Java جزءًا من Java Collections Framework وتقوم بتوسيع واجهة المجموعة. إنه يمثل مجموعة مرتبة (تُعرف أيضًا بالتسلسل) تسمح بالوصول الموضعي والعناصر المكررة والتكرار على عناصرها. يتم تنفيذ واجهة القائمة من خلال عدة فئات، مثل ArrayList وLinkedList وVector وStack.
الخصائص الرئيسية لواجهة القائمة:
- المجموعة المرتبة: تحافظ القائمة على ترتيب إدراج العناصر، مما يعني أنه يمكن الوصول إلى العناصر من خلال فهرسها.
- يسمح بالتكرارات: يمكن أن تحتوي القائمة على عناصر مكررة، على عكس المجموعات التي لا تسمح بالتكرارات.
- الوصول الموضعي: يمكن الوصول إلى العناصر الموجودة في القائمة أو إضافتها أو إزالتها من خلال فهرسها.
- التكرار: تتيح واجهة القائمة تحسين حلقات for، بالإضافة إلى التكرار باستخدام Iterator أو ListIterator.
الطرق الشائعة الاستخدام لواجهة القائمة:
يتم أيضًا تنفيذ جميع طرق واجهة التجميع من خلال واجهة القائمة حيث تعمل واجهة القائمة على توسيع واجهة المجموعة.
- void add(int Index, E element): يقوم بإدراج العنصر المحدد E في الفهرس المحدد في هذه القائمة.
- E get(int Index): إرجاع العنصر في الموضع المحدد في هذه القائمة.
- E إزالة (مؤشر كثافة العمليات): إزالة العنصر في الموضع المحدد في هذه القائمة.
- E set(int Index, E element): يستبدل العنصر في الموضع المحدد في هذه القائمة بالعنصر المحدد.
- int IndexOf(Object o): إرجاع فهرس التواجد الأول للعنصر المحدد، أو -1 إذا كانت القائمة لا تحتوي على العنصر.
- int lastIndexOf(Object o): إرجاع فهرس آخر تواجد للعنصر المحدد، أو -1 إذا كانت القائمة لا تحتوي على العنصر.
- List subList(int fromIndex, int toIndex): إرجاع عرض لجزء هذه القائمة بين fromIndex المحدد، شاملاً، وtoIndex، حصريًا.
import java.util.ArrayList; import java.util.List; public class ListExample { public static void main(String[] args) { Listlist = new ArrayList(); list.add("Java"); list.add("Collections"); list.add("Framework"); // Accessing elements by index System.out.println("First Element: " list.get(0)); // Removing an element by index list.remove(1); System.out.println("After Removal: " list); // Updating an element list.set(1, "Updated Element"); System.out.println("Updated List: " list); // Using a sublist List sublist = list.subList(0, 1); System.out.println("Sublist: " sublist); } }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3