يُعرف جدول التجزئة أيضًا باسم قائمة التوزيع ، وهي بنية فئة مجموعة تستخدم لتخزين كائنات المجموعة.
ما هو جدول التجزئة
يمكن لكل من المصفوفات والمتجهات تخزين الكائنات ، ولكن موضع التخزين للكائن عشوائي ، أي أنه لا يوجد اتصال ضروري بين الكائن نفسه وموضع التخزين الخاص به. عندما ترغب في العثور على كائن ، يمكنك فقط المقارنة مع كل عنصر في ترتيب معين (مثل البحث المتسلسل أو اثنين من النقاط). انخفض بشكل كبير.
تتمثل طريقة التخزين الفعالة في أنه لا يقارن بالعناصر الأخرى ، ويمكن الحصول على السجل الذي يمكن الحصول عليه في وقت واحد. يتطلب ذلك إنشاء علاقة محددة مقابلة بين موضع التخزين للكائن والسمة الرئيسية للكائن (تعيين إلى K) لتتوافق مع كل كائن يتوافق مع موضع تخزين فريد. عند البحث ، فقط احسب قيمة f (k) بناءً على سمات المفتاح للكائن المراد فحصها. إذا كان هذا الكائن في المجموعة ، فيجب أن يكون في موضع التخزين F (K) ، لذلك ليس من الضروري مقارنة عناصر أخرى في المجموعة. تسمى هذه العلاقة المقابلة F كطريقة تجزئة ، والجدول الذي تم إنشاؤه وفقًا لهذه الفكرة هو جدول التجزئة.
تستخدم Java فئة التجزئة لتحقيق جدول التجزئة.
• السعة: لا يتم إصلاح قدرة علامة التجزئة ، ويمكن أن تزيد سعة الكائن أيضًا تلقائيًا.
• المفتاح (المفتاح): يتطلب كل كائن تخزين كلمة رئيسية. جميع الكلمات الرئيسية في علامة التجزئة فريدة من نوعها.
• رمز التجزئة: إذا كنت ترغب في تخزين الكائن إلى علامة التجزئة ، فأنت بحاجة إلى تعيين مفتاح الكلمات الرئيسية لبيانات عدد صحيح لتصبح رمز التجزئة للمفتاح.
• البند: يحتوي كل من علامة التجزئة على مجالاتان ، وهما مفتاح مجال الكلمات الرئيسية وقيمة مجال القيمة (كائن التخزين). يمكن أن يكون كل من المفتاح والقيمة كائن نوع كائن ، ولكن لا يمكن أن يكون فارغًا.
• عامل التحميل: يتم تمثيل عامل التعبئة من خلال ملء جدول التجزئة ، وتساوي قيمته طول عدد العناصر من جدول التجزئة أعلاه.
استخدام جدول التجزئة
هناك ثلاثة أشكال رئيسية لطرق البناء لجداول التجزئة:
علامة التجزئة () ؛
علامة التجزئة (السعة int) ؛
hashtable (سعة int ، float loadfactor)
يتم عرض الطرق الرئيسية لجداول التجزئة في الجدول 8-6.
الجدول 8-6 في كثير من الأحيان الطرق المحددة بواسطة تعريف جدول التجزئة
طريقة | وظيفة |
---|---|
باطل واضح () | إعادة ومسح جدول التجزئة |
Boolean يحتوي على (قيمة الكائن) | حدد ما إذا كان جدول التجزئة يحتوي على كائن معين ، إذا كان هناك عودة صحيحة ، وإلا فسيتم إرجاع الخاطئة |
يحتوي Boolean على Keykey (مفتاح الكائن) | حدد ما إذا كان جدول التجزئة يحتوي على كلمة رئيسية معينة ، إذا كان هناك عودة إلى TRUE ، وإلا سيتم إرجاع الخاطئة |
منطقية isempty () | تأكد مما إذا كان جدول التجزئة فارغًا ، إذا عدت إلى TRUE ، وإلا سيتم إرجاع الخاطئة |
الكائن الحصول على (مفتاح الكائن) | كائن للحصول على الكلمات الرئيسية المقابلة ، إذا لم يكن هناك عودة فارغة |
إعادة صياغة باطلة () | بغض النظر عن Howh ، يمكن لجدول التجزئة التوسع أن يحفظ المزيد من العناصر. |
وضع الكائن (مفتاح الكائن ، قيمة الكائن) | احفظ الكائن إلى جدول التجزئة مع كلمة رئيسية معينة. |
إزالة الكائن (مفتاح الكائن) | احذف الكائن المقابل لمرحلة الكلمات الرئيسية من جدول التجزئة ، إذا لم يعود الكائن إلى فارغ |
حجم int () | العودة إلى حجم جدول التجزئة |
سلسلة tostring () | قم بتحويل محتوى جدول التجزئة إلى سلسلة |
يمكن أيضًا تنفيذ إنشاء جدول التجزئة من خلال المشغل الجديد. بيانها هو:
HaveTable لديه = new hashtable () ؛
مثال:
[مثال 8-12] اجتياز جداول التجزئة.
// ************ ep8_12.java *********************************** ****************************************************** ******************* Import Java.Util.*؛ HAS.PUT (One "، عدد صحيح جديد (1)) ؛ "، جديد مزدوج (12.3)) ؛ set s = has.keyset () ؛ لـ (iterator <string> i = s.iterator () ؛ i.next ())) ؛}}}
نتائج التشغيل:
21312.3