مقدمة الخريطة
قم بتخطيط مفتاح كائن القيمة. لا يمكن أن تحتوي الخريطة على مفاتيح مكررة ؛ يمكن لكل مفتاح فقط تعيين قيمة واحدة على الأكثر. تحل هذه الواجهة محل فئة القاموس ، وهي فئة مجردة بالكامل ، وليس واجهة.
توفر واجهة الخريطة ثلاث طرق عرض للتجميع تسمح بمشاهدة محتويات الخريطة في شكل مجموعة مفاتيح أو مجموعة قيمة أو مجموعة علاقة رسم خرائط للمفاتيح. يتم تعريف ترتيب التعيين على أنه الترتيب الذي يعيد به التكرار عناصره على عرض مجموعة الخريطة. تضمن بعض تطبيقات رسم الخرائط صراحة طلبها ، مثل فئة Treemap ؛ البعض الآخر لا يضمن طلبهم ، مثل فئة HashMap.
ملاحظة: يجب توخي الحذر الإضافي عند استخدام كائنات قابلة للتغيير كمفاتيح رسم الخرائط. عندما يكون الكائن مفتاحًا في الخريطة ، إذا تم تغيير قيمة الكائن بطريقة تؤثر على المقارنة المتساوية ، فإن سلوك الخريطة سيكون غير مؤكد. الحالة الخاصة التي يحظرها هذا هي أن الخريطة لا تسمح بتضمين نفسها كمفتاح. على الرغم من أن الخريطة مسموح بها بتضمين نفسها كقيمة ، كن حذرًا: إن تعريف أساليب المساواة والرمز الحزبي لن يكون صريحًا على هذه الخرائط.
واجهة الخريطة:
توفر الخريطة رسم خرائط من مفتاح إلى قيمة. لا يمكن أن تحتوي الخريطة على نفس المفتاح ، ويمكن لكل مفتاح فقط تعيين قيمة واحدة. توفر واجهة الخريطة ثلاثة أنواع من مشاهدات المجموعة. يمكن اعتبار محتوى الخريطة مجموعة من مجموعات المفاتيح أو مجموعة من مجموعات القيمة أو مجموعة من تعيينات القيمة الرئيسية.
فئة الهاشت
يرث علامة التجزئة واجهة الخريطة وينفذ جدول التجزئة مع رسم خرائط القيمة الرئيسية. يمكن استخدام أي كائن غير فائق كمفتاح أو قيمة.
استخدم (مفتاح ، قيمة) لإضافة بيانات ، استخدم GET (مفتاح) لاسترداد البيانات. الوقت النفقات العامة لهاتين العمليتين الأساسيتين ثابتة. يقوم علامة التجزئة بضبط الأداء من خلال معلمات السعة الأولية ومعلمات عامل التحميل. عادة ، يمكن لعامل التحميل الافتراضي 0.75 تحقيق توازن الوقت والمساحة بشكل أفضل. يمكن أن توفر زيادة عامل التحميل المساحة ولكن سيزداد وقت البحث المقابل ، مما سيؤثر على عمليات مثل Get and Put.
مثال بسيط على استخدام علامة التجزئة على النحو التالي: وضع 1 و 2 و 3 في علامة تجزئة ، ومفاتيحهم هي "واحدة" ، "اثنان" ، "ثلاثة" على التوالي:
أرقام hashtable = new hashtable () ؛ الأرقام. الأرقام. الأرقام.
لإخراج رقم ، مثل 2 ، استخدم المفتاح المقابل:
عدد صحيح n = (عدد صحيح) number.get ("اثنين") ؛ System.out.println ("two =" + n) ؛نظرًا لأن كائن كمفتاح سيحدد موضع القيمة المقابلة عن طريق حساب وظيفة التجزئة الخاصة به ، يجب على أي كائن كمفتاح تنفيذ الأساليب ومتساوي. ترث الأساليب hashcode و equals من كائن فئة الجذر. إذا كنت تستخدم فئة مخصصة كمفتاح ، فكن حذرًا جدًا. وفقًا لتعريف وظيفة التجزئة ، إذا كان الكائنان متماثلان ، أي OBJ1.equals (OBJ2) = صحيح ، يجب أن يكون رمز hashcode هو نفسه ، ولكن إذا كان الكائنان مختلفان ، فقد لا تختلف رموزها. إذا كانت الترميزات من كائنين مختلفين متماثلين ، فإن هذه الظاهرة تسمى الصراع. سيزيد الصراع من الوقت العام لتشغيل جدول التجزئة. لذلك ، حاول تحديد طريقة HashCode () لتسريع تشغيل جدول التجزئة.
إذا كان الكائن نفسه يحتوي على علامات ترميز مختلفة ، فستكون العملية الموجودة على جدول التجزئة نتائج غير متوقعة (إرجاع طريقة GET المتوقعة الفارغة). لتجنب هذه المشكلة ، تحتاج فقط إلى تذكر شيء واحد: يجب عليك إعادة كتابة طريقة متساوية وطريقة HashCode في نفس الوقت ، بدلاً من كتابة أحدهم.
تتم مزامنة الهاشتو.
فئة هاشماب
HashMap يشبه علامة التصنيف ، والفرق هو أن hashmap غير متزامن ويسمح فارغة ، أي القيمة الفارغة والمفتاح الفارغ. ، ولكن عندما يتم اعتبار HashMap عبارة عن مجموعة (طريقة القيم () يمكن أن تُرجع مجموعة) ، فإن وقت التكراري التكراري النفقات العامة يتناسب مع قدرة hashmap. لذلك ، إذا كان أداء عمليات التكرار أمرًا مهمًا للغاية ، فلا تضع سعة التهيئة لـ HashMap ليكون مرتفعًا جدًا أو أن عامل التحميل منخفض للغاية.
الفئة الضعيفة
DefehashMap هو hashmap محسّن ينفذ "مرجعًا ضعيفًا" للمفتاح. إذا لم يعد المشار إليه مفتاحًا خارجيًا ، فيمكن إعادة تدوير المفتاح بواسطة GC.
ما سبق هو مقدمة لواجهة خريطة جافا. يمكن للطلاب الذين يتعلمون برمجة Java الرجوع إليها.