خريطة متعددة
في علوم الحاسوب ، تُعدّ الخريطة المتعددة (وتُعرف أحيانًا باسم التجزئة المتعددة أو القاموس المتعدد أو القاموس المتعدد ) تعميمًا لنوع البيانات المجردة للخريطة أو المصفوفة الترابطية، حيث يمكن ربط أكثر من قيمة واحدة بمفتاح مُحدد وإرجاعها له. تُعتبر كل من الخريطة والخريطة المتعددة حالات خاصة من الحاويات (انظر، على سبيل المثال، حاويات مكتبة القوالب القياسية في لغة C++ ). غالبًا ما تُنفَّذ الخريطة المتعددة كخريطة تحتوي على قوائم أو مجموعات كقيم لها.
أمثلة
- في نظام تسجيل الطلاب، حيث يمكن للطلاب التسجيل في عدة مقررات دراسية في آن واحد، قد يكون هناك ارتباط لكل تسجيل للطالب في مقرر دراسي، حيث يكون المفتاح هو رقم الطالب والقيمة هي رقم المقرر. إذا كان الطالب مسجلاً في ثلاثة مقررات دراسية، فسيكون هناك ثلاثة ارتباطات تحتوي على نفس المفتاح.
- قد يحتوي فهرس الكتاب على أي عدد من المراجع لمصطلح فهرس معين، وبالتالي يمكن ترميزه كخريطة متعددة من مصطلحات الفهرس إلى أي عدد من مواقع المراجع أو الصفحات.
- قد تحتوي سلاسل الاستعلام على قيم متعددة مرتبطة بحقل واحد. ويحدث هذا عادةً عندما يسمح نموذج الويب بتحديد مربعات اختيار أو خيارات متعددة استجابةً لعنصر نموذج واحد.
الدعم اللغوي
لغة سي++
توفر مكتبة القوالب القياسية للغة C++ multimapالحاوية للخريطة المتعددة المصنفة باستخدام شجرة بحث ثنائية متوازنة ذاتيًا ، [ 1 ] ويوفر امتداد STL الخاص بـ SGIhash_multimap الحاوية التي تنفذ خريطة متعددة باستخدام جدول تجزئة . [ 2 ]
ابتداءً من C++11، توفر مكتبة القوالب القياسية (Standard Template Library)unordered_multimap خاصية الخرائط المتعددة غير المرتبة. [ 3 ]
دارت
جافا
توفر مكتبة Apache Commons Collections واجهة MultiMap للغة Java . [ 5 ] كما توفر فئة MultiValueMap التي تُنشئ MultiMap من كائن Map ونوع Collection. [ 6 ]
توفر مكتبة جوجل جوافا واجهة Multimap وتطبيقاتها. [ 7 ]
كوتلين
لا تدعم لغة Kotlin الخرائط المتعددة بشكل صريح، [ 8 ] ولكن يمكن تنفيذها باستخدام الخرائط التي تحتوي على حاويات [ 9 ] لنوع القيمة. على سبيل المثال، Map<User, List<Book>>يمكن ربط كل مستخدم بقائمة من الكتب.
بايثون
توفر لغة بايثون collections.defaultdictفئة يمكن استخدامها لإنشاء خريطة متعددة. يمكن للمستخدم إنشاء مثيل للفئة على النحو التالي collections.defaultdict(list):
أوكاميل
تقوم وحدة المكتبة القياسية في OCamlHashtbl بتنفيذ جدول تجزئة حيث يكون من الممكن تخزين قيم متعددة لمفتاح واحد.
سكالا
توفر واجهة برمجة التطبيقات (API) الخاصة بلغة البرمجة Scala أيضًا Multimap وتطبيقاتها. [ 10 ]
انظر أيضاً
- مجموعة متعددة للحالة التي يمكن أن يظهر فيها نفس العنصر عدة مرات
مراجع
- ↑ "multimap<Key, Data, Compare, Alloc>" . دليل مبرمج مكتبة القوالب القياسية . شركة سيليكون جرافيكس إنترناشونال .
- ↑ "hash_multimap<Key, HashFcn, EqualKey, Alloc>" . دليل مبرمج مكتبة القوالب القياسية . شركة سيليكون جرافيكس إنترناشونال .
- ↑ "مسودة عمل، معيار للغة البرمجة C++" (PDF) . ص 7807.
- ↑ "Multimap" . وثائق واجهة برمجة تطبيقات Quiver .
- ↑ "واجهة MultiMap" . واجهة برمجة تطبيقات Commons Collections 3.2.2، Apache Commons .
- ↑ "فئة MultiValueMap" . واجهة برمجة تطبيقات Commons Collections 3.2.2، Apache Commons .
- ↑ "واجهة Multimap<K,V>" . مكتبة Guava 2.0 . مؤرشفة من الأصل بتاريخ 15 يناير 2013. تم الاطلاع عليها بتاريخ 1 يناير 2013 .
- ↑ "تنفيذ MultiMap في Kotlin | Baeldung on Kotlin" . 5 ديسمبر 2023.
- ↑ "الوصول إلى البيانات باستخدام Room DAOs" .
- ↑ "Scala.collection.mutable.MultiMap" . واجهة برمجة تطبيقات Scala المستقرة .
- المصفوفات الترابطية
- أنواع البيانات المجردة
