"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > إطار تجميع جافا

إطار تجميع جافا

تم النشر بتاريخ 2024-11-07
تصفح:662

Que ما هو Java Collection Framework؟

إطار عمل Ans Java Collection عبارة عن مكتبة مدمجة قوية توفر مجموعة من التنفيذ الأمثل لهياكل البيانات والخوارزميات الأكثر استخدامًا. ويستخدم على نطاق واسع في بناء تطبيقات Java وحل تطوير البرامج في العالم الحقيقي التحديات.


ما هي مزايا إطار مجموعة Java؟

الإجابة بعض مزايا إطار مجموعة Java هي

  1. البنية الموحدة: كل بنية بيانات مشتقة من واجهات مثل الواجهة القابلة للتكرار وواجهة التجميع التي توفر إحساسًا بالتطبيقات المشتركة.
  2. سهولة الاستخدام: يعمل على تبسيط عملية التطوير من خلال توفير هياكل البيانات والخوارزميات المعدة مسبقًا. يمكن للمطور التركيز بشكل أكبر على منطق الأعمال بدلاً من التنفيذ اليدوي وتحسين هياكل البيانات شائعة الاستخدام والخوارزميات القياسية.
  3. المرونة: إذا أردنا تغيير هياكل البيانات الأساسية، فيمكننا القيام بذلك بسهولة دون القلق من أن تغيير بنية البيانات سيؤدي إلى تغيير أنماط استرجاع البيانات والوصول إليها (في الغالب).
  4. أمان الموضوع: نظرًا لأن Java توفر طريقة لتشغيل العمليات على سلاسل مختلفة بشكل فردي، فإن Java Collection Framework يوفر فئات مختلفة للتشغيل في بيئات متعددة الخيوط وتطبيقات ذات ترابط واحد.

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

JAVA COLLECTION FRAMEWORK


واجهة قابلة للتكرار
تعد الواجهة القابلة للتكرار في Java مكونًا رئيسيًا في Collection Framework. إنها الواجهة الجذرية لجميع أنواع المجموعات التي يمكن تكرارها. يتيح تنفيذ الواجهة القابلة للتكرار أن يكون الكائن هدفًا لـ "حلقة لكل حلقة" (المعروفة أيضًا باسم حلقة for المحسنة).
كما أنه يوفر كائن مكرر يمكن استخدامه للتكرار الأمامي لجميع بنيات البيانات التي تنفذ هذه الواجهة القابلة للتكرار.

مثال لاستخدام كل حلقة (مُحسّن للحلقة)

داخليًا تنفذ ArrayList القائمة وتوسع واجهة القائمة واجهة المجموعة وتوسع واجهة المجموعة الواجهة القابلة للتكرار.

List list = new ArrayList();// الإعلان عن بنية البيانات
list.add("Java");//إضافة عنصر
list.add("Collections");//إضافة عنصر
list.add("Framework");//إضافة عنصر
لـ (عنصر السلسلة: قائمة) {// التكرار باستخدام حلقة for المحسنة
System.out.println(element);

مثال باستخدام كائن ITERABLE

Iterator iterator = list.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 



ملحوظة :

  1. التكرارات في Java سريعة الفشل. هذا يعني أنه إذا تم تعديل المجموعة أثناء التكرار (باستثناء طريقة الإزالة () الخاصة بالمكرر)، فإنها ستطرح استثناء ConcurrentModificationException.
  2. يمكن لطريقة الإزالة () إزالة العناصر فقط، ويجب استدعاؤها مرة واحدة فقط لكل استدعاء للتالي (). وإلا فإنه سيتم طرح IllegalStateException.

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

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

//ArrayList
Collection c = 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);

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

  1. int size : إرجاع حجم المجموعة.
  2. منطقية فارغة: إرجاع صحيح إذا كانت المجموعة فارغة.
  3. منطقي يحتوي على (Object o) : يُرجع صحيحًا إذا كان الكائن o موجودًا في المجموعة.
  4. Iterator iterator() : إرجاع مكرر يشير إلى مجموعة.
  5. Object[] toArray() : يغطي مجموعة لمصفوفة من نوع الكائن.
  6. T[] toArray(T[] a) : إرجاع مصفوفة تحتوي على جميع عناصر المجموعة؛ نوع وقت تشغيل المصفوفة التي تم إرجاعها هو نوع المصفوفة المحددة.
  7. إضافة منطقية (E e) : إضافة العنصر e إلى المجموعة. يُرجع صحيحًا إذا كانت العملية ناجحة.
  8. إزالة منطقية (Object o) : إزالة كائن o من المجموعة. يُرجع صحيحًا إذا كانت العملية ناجحة.
  9. boolean يحتوي على All(Collection> c) ​​: يُرجع صحيحًا إذا كانت جميع العناصر في كلتا المجموعتين متماثلة. يعود صحيحا إذا كانت العملية ناجحة. 10.boolean addAll(Collection Extends E> c) : يضيف كل عناصر كلتا المجموعتين. يُرجع صحيحًا إذا كانت العملية ناجحة.
  10. boolean RemoveAll(Collection> c) ​​: يزيل عنصر المجموعة c من مجموعة المتصل. يُرجع صحيحًا إذا كانت العملية ناجحة.
  11. boolean keepAll(Collection> c) ​​: يحتفظ فقط بالعناصر الموجودة في المجموعة c.
  12. باطلة واضحة (): مسح كافة العناصر من المجموعة.

من خلال تنفيذ فئة المجموعة يمكننا تجاوز الطرق المذكورة أعلاه لإنشاء مجموعة مخصصة. وفيما يلي مثال لنفسه.

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;

public class CustomCollection implements 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.

الخصائص الرئيسية لواجهة القائمة:

  1. المجموعة المرتبة: تحافظ القائمة على ترتيب إدراج العناصر، مما يعني أنه يمكن الوصول إلى العناصر من خلال فهرسها.
  2. يسمح بالتكرارات: يمكن أن تحتوي القائمة على عناصر مكررة، على عكس المجموعات التي لا تسمح بالتكرارات.
  3. الوصول الموضعي: يمكن الوصول إلى العناصر الموجودة في القائمة أو إضافتها أو إزالتها من خلال فهرسها.
  4. التكرار: تتيح واجهة القائمة تحسين حلقات for، بالإضافة إلى التكرار باستخدام Iterator أو ListIterator.

الطرق الشائعة الاستخدام لواجهة القائمة:
يتم أيضًا تنفيذ جميع طرق واجهة التجميع من خلال واجهة القائمة حيث تعمل واجهة القائمة على توسيع واجهة المجموعة.

  1. void add(int Index, E element): يقوم بإدراج العنصر المحدد E في الفهرس المحدد في هذه القائمة.
  2. E get(int Index): إرجاع العنصر في الموضع المحدد في هذه القائمة.
  3. E إزالة (مؤشر كثافة العمليات): إزالة العنصر في الموضع المحدد في هذه القائمة.
  4. E set(int Index, E element): يستبدل العنصر في الموضع المحدد في هذه القائمة بالعنصر المحدد.
  5. int IndexOf(Object o): إرجاع فهرس التواجد الأول للعنصر المحدد، أو -1 إذا كانت القائمة لا تحتوي على العنصر.
  6. int lastIndexOf(Object o): إرجاع فهرس آخر تواجد للعنصر المحدد، أو -1 إذا كانت القائمة لا تحتوي على العنصر.
  7. 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) {
        List list = 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);
    }
}

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/harsh_khanpara_e78fd42c5a/java-collection-framework-4fm8?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3