ArrayList مقابل HashMap
< span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap هما فئتان للتجميع في جافا. على الرغم من أن لديهم نفس الدور في جمع البيانات وتنظيمها ، إلا أن الطريقة التي يقومون بها بعمل نسخة احتياطية من البيانات ومعالجتها مختلفة. في هذه المقالة سوف نرى الاختلافات والتشابهات بين الاثنين.الفرق بين ArrayList و HashMap في Java
أحد الاختلافات المهمة بين نمط HashMap و ArrayList< / span> هو أن الأول هو تنفيذ جدول التجزئة والثاني عبارة عن مصفوفة ديناميكية يمكن تغيير حجمها. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> هما الفئتان الأكثر شيوعا في إطار عمل Java Collection. كلاهما يستخدم في تخزين المعلومات وتنفيذها ، الاستخدام مختلف تماما.الفرق الرئيسي بين < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap هل هذا < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> يعتمد على بنية فهرس الصفيف بينما < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap عبارة عن بنية في خريطة تستخدم التجزئة لاستخراج القيم.
بعض الاختلافات الحاسمة بين < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap:
- الفرق الأول بين < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap هل هذا < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> ينفذ الواجهة قائمة< / امتداد> بينما < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap ينفذ نمط Map في Java.
- قائمة الصفيفالامتداد> النسخ الاحتياطي كائن واحد في كل مرة بينما < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap يحفظ المفتاح والقيم< المفتاح والقيمة >. < / li>
- قائمة الصفيفالامتداد> يحافظ على ترتيب الكائنات المضافة. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap لا يضمن هذه الوظيفة.< / li>
- قائمة الصفيفالامتداد> يسمح بإدخال كائنات مكررة ولكن < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap لا يسمح بإدخال نفس المفتاح مرتين ، لكنه يسمح بنفس قيم المفاتيح.< / li>
- تعقيد نمط الحصول على (فهرس) < / span> من < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> هو O (1) لكن < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" يمكن أن يكون >get(key) O (1) في أفضل الأحوال و O (n) في أسوأ الحالات.< / li>< / ul>
أوجه التشابه بين ArrayList و HashMap في Java< / h2 > فيما يلي بعض النقاط المشتركة بين < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap في جافا:
- قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap غير متزامنة. يجب عدم استخدامها في برنامج متعدد الخيوط بدون مزامنة خارجية.
- تكرار < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap يمكن أن يؤدي إلى A < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >ConcurrentModificationException< / span> إذا حدث تغيير في البنية مرة واحدة فقط المكرر< / span>.< / li>
- قائمة الصفيفالامتداد> يسمح< نمط الامتداد = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >فارغة< / سبان>. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap يسمح< نمط الامتداد = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >فارغ< / سبان> للمفاتيح والقيم.< / li>
- قائمة الصفيفالامتداد> يسمح بالعناصر المكررة و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap يسمح بتكرار القيم.
- من حيث الأداء < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قائمة الصفيفالامتداد> لديه وقت ثابت للقراءة إذا كنت تعرف الفهرس بالطريقة get() مشابه ل < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashMap
الذي يحتوي أيضا على وقت قراءة ثابت.< / li> - تنفيذ نمط ArrayList و HashMap على صفيف.
- كلتا المجموعتين ArrayList و HashMap< / span> باستخدام نمط المكرر< / span>.< / li>< / ul>