الفرق الرئيسي - القائمة مقابل المجموعة
تستخدم معظم لغات البرمجة المصفوفات لتخزين مجموعة من البيانات من نفس النوع. أحد العوائق الرئيسية للمصفوفات هو أنه بمجرد الإعلان عن حجم المصفوفة ، لا يمكن تعديله. إذا أراد المبرمج تخزين قيم تتجاوز حجم المصفوفة ، فيجب عليه إنشاء مصفوفة جديدة ونسخ العناصر الموجودة إلى المصفوفة الجديدة. في هذه الحالات ، يمكن استخدام المجموعات. من الممكن إضافة عناصر وحذف عناصر والعديد من العمليات الأخرى بدعم من المجموعات. هناك أنواع مختلفة من المجموعات متوفرة في لغات البرمجة مثل Java. القائمة والمجموعة هي واجهات للتسلسل الهرمي للمجموعات.الواجهة الأساسية للواجهات الأخرى هي Collection. يتمثل الاختلاف الرئيسي بين القائمة والمجموعة في أن القائمة تدعم تخزين نفس العنصر عدة مرات بينما لا تدعم المجموعة تخزين نفس العنصر عدة مرات. لذلك ، لا تسمح المجموعة بالازدواجية.
ما هي القائمة؟
القائمة هي واجهة تعمل على توسيع واجهة المجموعة. هناك عدد من الطرق في واجهة المجموعة. تساعد طريقة الإضافة على إضافة عنصر. "طريقة الإزالة" هي إزالة عنصر. هناك "طريقة addAll" لإضافة عناصر متعددة أثناء "طريقة إزالة الكل" لإزالة العناصر من المجموعة. تساعد طريقة احتواء على معرفة ما إذا كان كائن معين موجودًا في القائمة أم لا. الغرض من "containsAll" هو معرفة ما إذا كانت مجموعة من العناصر موجودة في المجموعة. تُستخدم طريقة التكرار للتكرار خلال عناصر القائمة. نظرًا لأن القائمة توسع المجموعة ، فإن جميع أساليب المجموعة تنتمي إلى القائمة. بخلاف تلك الطرق ، تحتوي القائمة على طرق مثل get and set.يمكن للمبرمج الحصول على قيمة بمؤشر معين باستخدام طريقة get. يمكن للمبرمج تعيين قيمة في فهرس معين باستخدام طريقة المجموعة. يتم استخدام "indexOf" للعثور على فهرس عنصر.
في القائمة ، يمكن إجراء العمليات وفقًا للوضع. يمكن للمبرمج توفير عنصر البيانات المراد إضافته إلى الفهرس. لذلك ستتم إضافته إلى الفهرس المحدد. إذا لم يقدم المبرمج فهرسًا ، فسيتم إضافة العنصر إلى نهاية القائمة. كما أنه يحتفظ بالترتيب المدرج. إذا تمت إضافة العنصر 1 ثم تمت إضافة العنصر 2 ، فسيكون العنصر 1 قبل العنصر 2.
الشكل 01: القائمة والمجموعة
ArrayList و LinkedList و Vector هي بعض الفئات التي تقوم بتنفيذ List. في ArrayList ، يكون الوصول إلى عنصر سريعًا ولكن الإدخال والحذف أقل. ArrayList ليست آمنة لمؤشر الترابط. قد لا يؤدي الوصول إلى نفس ArrayList من سلاسل رسائل متعددة إلى نفس النتيجة. في LinkedList ، ترتبط العناصر بالخلف والأمام. يعد إدراج العناصر وحذفها باستخدام LinkedList أسرع من ArrayList. تطبق LinkedList قائمة وقائمة كلاهما. المتجه مشابه لـ ArrayList ، لكنه آمن في المداس لأن جميع الطرق متزامنة.
ما هو تعيين؟
Set هي واجهة تعمل على توسيع واجهة المجموعة. نظرًا لأن واجهة Set توسع المجموعة ، فإن جميع أساليب المجموعة تنتمي أيضًا إلى Set. مجموعة لا تدعم قيم الازدواجية. لذلك ، لا يمكن للمبرمج تخزين نفس العنصر مرتين. يحافظ على مجموعة فريدة من العناصر. تعمل واجهة SortedSet على توسيع واجهة Set. SortedSet يحافظ على العناصر في ترتيب مرتبة. تمتد واجهة NavigableSet SortedSet. يوفر NavigableSet طرقًا للتنقل مثل الأسفل والأرض والسقف وما إلى ذلك.
HashSet و LinkedHashSet و TreeSet هي بعض الفئات التي تنفذ واجهة Set.تنفذ HashSet واجهة Set. لا تحتفظ بالترتيب المدرج. إذا تم إدراج القيم على هيئة أ ، س ، ب فقد يتم تخزينها على هيئة ، x ، أ ، ب. تحتفظ LinkedSet بالترتيب المدرج. إذا تم إدخال العناصر بترتيب أ ، س ، ب ، فسيكون ترتيب التخزين أ ، س ، ب. تقوم TreeSet بتنفيذ Set و NavigableSet. لا يحافظ على ترتيب الإدراج ولكنه يخزن العناصر بالترتيب الفرز. إذا كان الترتيب المدرج هو أ ، ج ، ب ، فسيتم تخزين العناصر على هيئة أ ، ب ، ج. لن تحتوي جميع HashSet و LinkedHashSet و TreeSet على أي عناصر مكررة.
ما هي أوجه التشابه بين القائمة والمجموعة؟
- تعمل واجهات القائمة والتعيين على توسيع واجهة المجموعة.
- كل من قائمة وتعيين عمليات الدعم مثل إضافة وإزالة العناصر.
ما هو الفرق بين القائمة والمجموعة؟
قائمة مقابل تعيين |
|
واجهة القائمة هي الواجهة الفرعية للمجموعة التي تحتوي على طرق لإجراء عمليات مثل الإدراج والحذف بناءً على الفهرس. | Set Interface هي واجهة فرعية للمجموعة تحتوي على طرق لإجراء عمليات مثل إدراج العناصر وحذفها مع الحفاظ على العناصر الفريدة. |
فئات | |
ArrayList و Vector و LinkedList هي فئات تنفذ واجهة القائمة. | HashSet و LinkedHashSet و TreeSet هي فئات تنفذ واجهة Set. |
ازدواجية العنصر | |
قائمة تدعم ازدواجية العناصر. | مجموعة لا تدعم ازدواجية العناصر. العناصر فريدة من نوعها. |
ملخص - قائمة مقابل مجموعة
تُستخدم المجموعات لتخزين العناصر ديناميكيًا. لغات البرمجة مثل Java توفر واجهة المجموعة. القائمة والمجموعة هما واجهتان تنتمي إلى واجهة المجموعة. كلا الواجهتين تعمل على توسيع المجموعة. ناقشت هذه المقالة الفرق بين القائمة والمجموعة. يتمثل الاختلاف الرئيسي بين القائمة والمجموعة في أن القائمة تدعم تخزين نفس العنصر عدة مرات بينما لا تدعم المجموعة تخزين نفس العنصر عدة مرات. مجموعة تحافظ دائمًا على عناصر فريدة.