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

المجموعات

تم النشر بتاريخ 2024-08-10
تصفح:967

تحدد واجهة المجموعة العمليات الشائعة للقوائم والمتجهات والمكدسات وقوائم الانتظار وقوائم الانتظار ذات الأولوية والمجموعات.

يدعم Java Collections Framework نوعين من الحاويات:

  • واحدة لتخزين مجموعة من العناصر تسمى ببساطة مجموعة .
  • الآخر، لتخزين أزواج المفاتيح/القيمة، يسمى map.

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

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

Image description

تم تجميع كافة الواجهات والفئات المحددة في Java Collections Framework في الحزمة

java.util.

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

AbstractCollection للراحة. ولهذا السبب، يطلق عليها فئات مجردة ملائمة.

واجهة

المجموعة هي الواجهة الجذرية لمعالجة مجموعة من الكائنات. يتم سرد أساليبها العامة في الشكل أدناه. توفر فئة AbstractCollection تطبيقًا جزئيًا لواجهة Collection. ينفذ جميع الطرق في المجموعة باستثناء طرق add، وsize، وiterator. يتم تنفيذها في فئات فرعية محددة مناسبة.

Image description

توفر واجهة

المجموعة العمليات الأساسية لإضافة وإزالة العناصر في المجموعة. يضيف الأسلوب add عنصرًا إلى المجموعة. يضيف الأسلوب addAll جميع العناصر الموجودة في المجموعة المحددة إلى هذه المجموعة. تقوم الطريقة remove بإزالة عنصر من المجموعة. يقوم الأسلوب removeAll بإزالة العناصر من هذه المجموعة الموجودة في المجموعة المحددة. يحتفظ الأسلوب retainAll بالعناصر الموجودة في هذه المجموعة والموجودة أيضًا في المجموعة المحددة. تُرجع جميع هذه الأساليب منطقية. القيمة المرجعة هي صحيح إذا تم تغيير المجموعة نتيجة لتنفيذ الطريقة. تقوم الطريقة clear() ببساطة بإزالة كافة العناصر من المجموعة.

الطرق

addAll، removeAll، وretainAll تشبه عمليات الاتحاد والفرق والتقاطع.

توفر واجهة

المجموعة عمليات استعلام متنوعة. تقوم الطريقة size بإرجاع عدد العناصر في المجموعة. تتحقق الطريقة التي تحتوي على مما إذا كانت المجموعة تحتوي على العنصر المحدد. يتحقق الأسلوب containsAll مما إذا كانت المجموعة تحتوي على كافة العناصر الموجودة في المجموعة المحددة. الطريقة isEmpty ترجع صحيح إذا كانت المجموعة فارغة.

توفر واجهة

Collection طريقة toArray()، والتي تقوم بإرجاع تمثيل مصفوفة للمجموعة.

لا يمكن تنفيذ بعض الأساليب الموجودة في واجهة

المجموعة في الفئة الفرعية المحددة. في هذه الحالة، ستطرح الطريقة java.lang.UnsupportedOperationException، وهي فئة فرعية من RuntimeException. هذا تصميم جيد يمكنك استخدامه في مشروعك. إذا لم يكن للطريقة أي معنى في الفئة الفرعية، فيمكنك تنفيذها على النحو التالي:

الفراغ العام someMethod () {

طرح UnsupportedOperationException
الجديد ("الطريقة غير مدعومة");

يعطي الكود أدناه مثالاً لاستخدام الطرق المحددة في واجهة

المجموعة.

عرض الحزمة؛ import java.util.*; فئة عامة TestCollection { public static void main(String[] args) { ArrayList Collection1 = new ArrayList(); Collection1.add("نيويورك"); Collection1.add("أتلانتا"); Collection1.add("دالاس"); Collection1.add("ماديسون"); System.out.println("قائمة المدن في المجموعة 1:"); System.out.println(collection1); System.out.println("\nهل دالاس في المجموعة 1؟ " Collection1.contains("دالاس")); Collection1.remove("دالاس"); System.out.println("\n" Collection1.size() " المدن موجودة في المجموعة1 الآن"); Collection Collection2 = new ArrayList(); Collection2.add("سياتل"); Collection2.add("بورتلاند"); Collection2.add("لوس أنجلوس"); Collection2.add("أتلانتا"); System.out.println("\nقائمة المدن في المجموعة 2:"); System.out.println(collection2); ArrayList c1 = (ArrayList)(collection1.clone()); c1.addAll(collection2); System.out.println("\nالمدن في المجموعة 1 أو المجموعة 2: "); System.out.println(c1); c1 = (ArrayList)(collection1.clone()); c1.retainAll(collection2); System.out.print("\nالمدن في المجموعة 1 والمجموعة 2:"); System.out.println(c1); c1 = (ArrayList)(collection1.clone()); c1.removeAll(collection2); System.out.print("\nالمدن في المجموعة 1، ولكن ليس في 2:"); System.out.println(c1); } }
package demo;
import java.util.*;

public class TestCollection {

    public static void main(String[] args) {
        ArrayList collection1 = new ArrayList();
        collection1.add("New York");
        collection1.add("Atlanta");
        collection1.add("Dallas");
        collection1.add("Madison");

        System.out.println("A list of cities in collection1:");
        System.out.println(collection1);

        System.out.println("\nIs Dallas in collection1? "   collection1.contains("Dallas"));

        collection1.remove("Dallas");
        System.out.println("\n"   collection1.size()   " cities are in collection1 now");

        Collection collection2 = new ArrayList();
        collection2.add("Seattle");
        collection2.add("Portland");
        collection2.add("Los Angeles");
        collection2.add("Atlanta");

        System.out.println("\nA list of cities in collection2:");
        System.out.println(collection2);

        ArrayList c1 = (ArrayList)(collection1.clone());
        c1.addAll(collection2);
        System.out.println("\nCities in collection1 or collection2: ");
        System.out.println(c1);

        c1 = (ArrayList)(collection1.clone());
        c1.retainAll(collection2);
        System.out.print("\nCities in collection1 and collection2: ");
        System.out.println(c1);

        c1 = (ArrayList)(collection1.clone());
        c1.removeAll(collection2);
        System.out.print("\nCities in collection1, but not in 2: ");
        System.out.println(c1);
    }

}

قائمة المدن في المجموعة 1:

[نيويورك، أتلانتا، دالاس، ماديسون]
هل دالاس في المجموعة 1؟ حقيقي
هناك 3 مدن في المجموعة 1 الآن
قائمة المدن في المجموعة 2:
[سياتل، بورتلاند، لوس أنجلوس، أتلانتا]
المدن في المجموعة 1 أو المجموعة 2:
[نيويورك، أتلانتا، ماديسون، سياتل، بورتلاند، لوس أنجلوس، أتلانتا]
المدن في المجموعة 1 والمجموعة 2: [أتلانتا]
المدن في المجموعة 1، ولكن ليس في 2: [نيويورك، ماديسون]

يقوم البرنامج بإنشاء كائن مجموعة ملموس باستخدام

ArrayList (السطر 7)، ويستدعي واجهة المجموعة التي تحتوي على طريقة (السطر 16)، طريقة إزالة (السطر 18)، طريقة الحجم (السطر 19)، طريقة addAll (السطر 31)، طريقة الاحتفاظ بالكل (السطر 36)، و طريقة إزالة الكل (السطر 41). في هذا المثال، نستخدم

ArrayList

. يمكنك استخدام أي فئة محددة من Collection مثل HashSet، LinkedList، Vector، وStack للاستبدال ArrayList لاختبار هذه الأساليب المحددة في واجهة Collection. يقوم البرنامج بإنشاء نسخة من قائمة المصفوفات (الأسطر 30، 35، 40). والغرض من ذلك هو الحفاظ على قائمة المصفوفة الأصلية سليمة واستخدام نسختها لإجراء عمليات

addAll

وretainAll وremoveAll العمليات. تقوم جميع الفئات المحددة في Java Collections Framework بتنفيذ واجهات

java.lang.Cloneable

وjava.io.Serializable باستثناء واجهات java.util.PriorityQueue لا يطبق الواجهة القابلة للاستنساخ. وبالتالي، يمكن استنساخ جميع مثيلات Cloneable باستثناء قوائم الانتظار ذات الأولوية ويمكن إجراء تسلسل لجميع مثيلات Cloneable.

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

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

Copyright© 2022 湘ICP备2022001581号-3