تعد المقارنة بين HashMap و Hashtable سؤالًا شائعًا في مقابلات Java ، والتي يتم استخدامها لاختبار ما إذا كان يمكن للمبرمجين استخدام فصول التجميع بشكل صحيح وما إذا كان بإمكانهم التكيف مع الأفكار المختلفة لحل المشكلات. كيف يعمل HashMap ، ومقارنة ArrayList مع Vector ، وهذا السؤال هو السؤال الأكثر كلاسيكية حول أطر مجموعة Java. Hashtable هي فئة تجميع عفا عليها الزمن موجودة في Java API لفترة طويلة. تم إعادة كتابتها في Java 4 وتنفيذ واجهة الخريطة ، لذلك أصبحت منذ ذلك الحين جزءًا من إطار مجموعة Java. من السهل جدًا طرح Hashtable و Hashmap في مقابلات Java ، وحتى أصبحت الأسئلة الأكثر شيوعًا التي يتم اختبارها في مقابلات إطار العمل ، لذلك لا تنس إعداد هذا السؤال قبل المشاركة في أي مقابلات Java.
في هذه المقالة ، لن نرى الفرق بين HashMap و Hashtable فحسب ، بل أيضًا أوجه التشابه بينهما.
الفرق بين hashmap و hashtable
كل من HashMap و Hashtable Deffernes Map Interfaces ، ولكن قبل تحديد أي واحد يجب استخدامه ، يجب أولاً معرفة الفرق بينهما. الاختلافات الرئيسية هي: سلامة الخيط ، التزامن ، والسرعة.
بعض المصطلحات المهمة التي يجب ملاحظة:
1) Sychronized يعني أن موضوع واحد فقط يمكنه تغيير علامة التجزئة في وقت واحد. وهذا يعني أن أي مؤشر ترابط يجب أن يحصل أولاً على قفل المزامنة عندما يريد تحديث علامة التجزئة. يجب أن تنتظر المواضيع الأخرى حتى يتم إصدار قفل المزامنة قبل أن يتمكنوا من الحصول على قفل المزامنة وتحديث علامة التجزئة مرة أخرى.
2) المرتبطة بأمان الفشل والتكرار المرتبطة. إذا قام كائن مجموعة بإنشاء Iterator أو ListIrator ، ثم تحاول مؤشرات الترابط الأخرى تغيير كائن المجموعة "من الناحية الهيكلية" ، فسيتم طرح استثناء ConcurrentModificationException. ولكن يمكن أن تغير مؤشرات الترابط الأخرى كائن التجميع من خلال طريقة set () لأن هذا لا يغير المجموعة "من الناحية الهيكلية". ومع ذلك ، إذا تم تغيير الهيكل وتم استدعاء طريقة SET () ، فسيتم طرح استثناء غير شرعي.
3) تشير التغييرات الهيكلية إلى حذف العنصر أو إدخاله ، والذي سيؤثر على بنية الخريطة.
هل يمكننا جعل مزامنة hashmap؟
يمكن مزامنة HashMap من خلال البيان التالي:
خريطة m = collections.synchronizemap (hashmap) ؛
ختاماً
هناك العديد من الاختلافات الرئيسية بين علامة التجزئة و hashmap: سلامة الخيط والسرعة. استخدم hashtable فقط عندما تحتاج إلى سلامة مؤشر ترابط كاملة ، وإذا كنت تستخدم Java 5 أو أعلى ، فيرجى استخدام ConcurrentHashMap.
الرابط الأصلي: Javarevisited Translation: ImportNew.com - Tang Xiaojuan Translation Link: http://www.importnew.com/7010.html