يقوم HashMap بتنفيذ واجهة الخريطة الأساسية في Java. يتم تنفيذ Hashtable من فئة Hashtable التي تعين المفتاح إلى القيم. يتم تنفيذ كل من HashMap و Hashtable في واجهة الخريطة في Java.
ومن ثم ، فإنهم مرتبطون ارتباطًا وثيقًا ببعضهم البعض ، ومع ذلك فهم مختلفون تمامًا عن بعضهم البعض في العديد من الجوانب.
الوجبات السريعة الرئيسية
- يسمح HashMap بالقيم الفارغة ولا تتم مزامنته ، بينما لا يسمح HashTable بالقيم الفارغة ويتم مزامنته.
- HashMap أسرع من HashTable لأنه يحتاج إلى المزامنة.
- HashTable هو مؤشر ترابط آمن ، بينما HashMap ليس كذلك.
HashMap مقابل Hashtable
الفرق بين خريطة التجزئة و Hashtable هو أن HashMap يتيح القيم المكررة لكل من المفاتيح والقيم ، بينما Hashtable لا يمكّن أي قيم مكررة لكل من المفاتيح والقيم. HashMap غير متزامن. ومن ثم فهي تمكن سلاسل رسائل متعددة من الاقتراب منها ، في حين أن Hashtable متزامن ولا يمكّن سلاسل رسائل متعددة من الاقتراب منها.

Hashmap هي بنية بيانات تخزن مفاتيح وقيمًا فريدة في Java. تم تنظيم فئة HashMap جيدًا لتحديد موضع القيمة وإدخال الإدخالات وحذف الإدخالات.
علاوة على ذلك ، لا يتم ترتيب الإدخالات الموجودة في HashMap. HashMap ليست آمنة للخيوط لأنها تمكن خيوط متعددة من الاقتراب منها.
Hashtable يتتبع المتغيرات المعلنة في Java. يعتمد Hashtable دائمًا على عامل التحميل بدلاً من عدد العناصر الموجودة في الجدول. ومن ثم فإن تنفيذ Hashtable بطيء للغاية.
يعتبر Hashtable آمنًا من سلاسل رسائل متعددة لأنه لا يمكّن سلاسل رسائل متعددة من الاقتراب منها.
جدول المقارنة
معلمات المقارنة | خريطة التجزئة | جدول التجزئة |
---|---|---|
التوافق | HashMap ليست متزامنة ، وبالتالي فهي تتيح العديد من مؤشرات الترابط التي تقترب منها لأنها ليست آمنة من سلاسل رسائل متعددة. | Hashtable متزامن وآمن من سلاسل رسائل متعددة لأنه لا يمكّن سلاسل رسائل متعددة من الاقتراب منها. |
سرعة | يتم تنفيذ HashMap بسرعة عالية. | يتم تنفيذ Hashtable بسرعة بطيئة للغاية. |
قبول القيمة الفارغة | يقبل HashMap القيم الخالية لكل من المفتاح والقيم. | لا يقوم Hashtable بتمكين أي قيمة خالية لكل من المفاتيح والقيم. |
المكرر | التكرار سريع الفشل وأحيانًا يلقي ConcurrentModificationException. | العداد ليس سريع الفشل ولا يقوم برمي أي ConcurrentModificationException. |
الوراثة الطبقية | فئة AbstractMap. | فئة القاموس. |
طلب توظيف جديد | يستخدم HashMap في صفحات الويب وتطبيقات الويب. | يستخدم Hashtable لمدققات التدقيق الإملائي عبر الإنترنت والبرامج داخل اللعبة. |
ما هو HashMap؟
HashMap عبارة عن مجموعة من المفاتيح والقيم الفريدة التي تقوم بتنفيذ واجهة الخريطة الأساسية في Java. يمكن العثور على المفتاح كفهارس في القائمة ، ولكن في الخريطة ، يتم العثور عليه ككائن.
علاوة على ذلك ، يتم تعيين كل مفتاح إلى قيمة واحدة فقط. تحتوي فئة HashMap على طريقة منهجية لتحديد موقع القيمة وإدراج الإدخالات وحذفها.
يحتوي HashMap على أنواع مختلفة من المنشئات. خريطة التجزئة() منشئ هو نوع من المُنشئ المستخدم لتفريغ HashMap بسعة أولية افتراضية وعامل تحميل افتراضي.
يحتوي Hashmap على قيم مكررة ، والإدخالات الموجودة في HashMap غير مرتبة. على سبيل المثال ، الفئة العامة HashMap يمتد AbstractMap ، قابل للاستنساخ ، قابل للتسلسل.
HashMap (السعة الأولية int) هو نوع من المُنشئ المستخدم لتفريغ HashMap بسعة أولية محددة وعامل تحميل افتراضي. علاوة على ذلك ، يقوم مُنشئ HashMap (السعة الأولية ، عامل التحميل العائم) بإفراغ HashMap بسعة أولية محددة وعامل تحميل.
HashMap ليس متزامنًا. لذا، فهو يُمكّن خيوطًا متعددة من الوصول إليه، وبفضل سلوكه المنظم جيدًا، يكون التنفيذ سريعًا.
HashMap(خريطة m) لإنشاء HashMap جديد بنفس التعيين السابق للخريطة المحددة. تُستخدم HashMaps في صفحات الويب وتطبيقات الويب.
ما هو Hashtable؟
جدول التجزئة متزامن، ويُنفَّذ من فئة جدول تجزئة تُعيِّن المفتاح للقيم. ونظرًا لطبيعة جدول التجزئة المتزامنة، لا تتواصل خيوط متعددة معها وجهًا لوجه.
Hashtable سهل التنفيذ للغاية وله قيم مكررة. علاوة على ذلك ، فإنه يقوم بتنفيذ واجهة خريطة أساسية في Java.
في Hashtable ، إذا تم العثور على المفاتيح على أنها سلاسل ، فإن وظيفة التجزئة تحولها إلى عدد ، ولكن إذا تم العثور على مفتاح الإدخال كأعداد صحيحة ، فسيتم استخدام Key mod TableSize.
من السهل حساب وظيفة التجزئة ، إلا أن التنفيذ القابل للتجزئة يتم بسرعة بطيئة للغاية. السرعة المنخفضة ترجع إلى الحجم الكبير لـ Hashtable ، ولا يتم تخصيص المفاتيح.
يُستخدم جدول التجزئة لتنفيذ عمليات الإدراج والبحث عن عمليات محددة في وقت متوسط ثابت. يعتمد جدول التجزئة على عامل التحميل لا على عدد العناصر الموجودة فيه.
في Hashtable ، من المهم أن يكون لديك TableSize ، والاختيار الصحيح لعامل التحميل ، ووظيفة التجزئة.
في Hashtable ، توجد أيضًا وظيفة تجزئة ثانية ، والتي تُستخدم لتحليل التصادم. يتم استخدام Hashtable في المجمّعين لتنفيذ جداول الرموز وبرامج الألعاب مثل جداول النقل والمدققات الإملائية عبر الإنترنت.
الاختلافات الرئيسية بين HashMap و Hashtable
- HashMap غير متزامن. ومن ثم فهي تمكن مؤشرات ترابط متعددة من الاقتراب ، في حين أن Hashtable متزامن ولا يمكّن سلاسل رسائل متعددة من الاقتراب منها.
- المكرر سريع الفشل وأحيانًا يلقي ConcurrentModificationException ، في حين أن العداد ليس سريع الفشل ولا يرمي أي ConcurrentModificationException.
- لا يحتوي HashMap على أي قيم مكررة ، بينما يحتوي Hashtable على قيم مكررة.
- Hashmap نظامي ومنظم جيدًا ، في حين أن Hashtable بسيط وغير منظم جيدًا.
- في Hashmap ، يتم التنفيذ بسرعة عالية ، بينما في Hashtable ، يتم التنفيذ بسرعة منخفضة.