المصفوفات مقابل Arraylists
المصفوفات هي بنية البيانات الأكثر استخدامًا لتخزين مجموعة من العناصر. توفر معظم لغات البرمجة طرقًا لتعريف المصفوفات بسهولة وعناصر الوصول في المصفوفات. يمكن النظر إلى المصمم على أنه مصفوفة ديناميكية ، والتي يمكن أن تنمو في الحجم. لهذا السبب ، لا يحتاج المبرمج إلى معرفة حجم المصمم عند تحديده.
ما هي المصفوفات؟
الموضح في الشكل 1 ، هو جزء من الكود يُستخدم عادةً للإعلان عن القيم وتعيينها إلى مصفوفة. الشكل 2 يصور كيف ستبدو المصفوفة في الذاكرة.
قيم int [5] ؛ قيم [0]=100 ؛ قيم [1]=101 ؛ قيم [2]=102 ؛ قيم [3]=103 ؛ قيم [4]=104 ؛ |
الشكل 1: رمز للإعلان عن القيم وتعيينها إلى مصفوفة
100 | 101 | 102 | 103 | 104 |
الفهرس: 0 | 1 | 2 | 3 | 4 |
الشكل 2: المصفوفة المخزنة في الذاكرة
فوق الكود ، يحدد المصفوفة التي يمكنها تخزين 5 أعداد صحيحة ويتم الوصول إليها باستخدام الفهارس من 0 إلى 4. إحدى الخصائص المهمة للمصفوفة هي أنه يتم تخصيص المصفوفة بأكملها ككتلة واحدة من الذاكرة ويحصل كل عنصر عليها مساحة خاصة في المصفوفة.بمجرد تحديد المصفوفة ، يتم تحديد حجمها. لذلك إذا لم تكن متأكدًا من حجم المصفوفة في وقت الترجمة ، فسيتعين عليك تحديد مصفوفة كبيرة بما يكفي لتكون في الجانب الآمن. لكن في معظم الأوقات ، سنستخدم عددًا أقل من العناصر مما خصصناه. لذلك يتم إهدار قدر كبير من الذاكرة بالفعل. من ناحية أخرى ، إذا لم تكن "المصفوفة الكبيرة بما يكفي" في الواقع كبيرة بما يكفي ، فسوف يتعطل البرنامج.
ما هي Arraylists؟
يمكن اعتبار المصفوفة كمصفوفة ديناميكية ، والتي يمكن أن تنمو في الحجم. لذلك ، يعد المصممون الأصليون مثاليين لاستخدامهم في المواقف التي لا تعرف فيها حجم العناصر المطلوبة في وقت الإعلان. في Java ، يمكن للمصفوفين الاحتفاظ بالكائنات فقط ، ولا يمكنهم الاحتفاظ بأنواع بدائية مباشرة (يمكنك وضع الأنواع الأولية داخل كائن أو استخدام فئات التضمين للأنواع الأولية). بشكل عام ، يتم تزويد مصففي الصفوف بطرق لأداء الإدراج والحذف والبحث. التعقيد الزمني للوصول إلى عنصر هو o (1) ، بينما يحتوي الإدراج والحذف على تعقيد زمني لـ o (n).في Java ، يمكن اجتياز المصفوفين باستخدام حلقات foreach أو التكرارات أو ببساطة باستخدام الفهارس.
ما هو الفرق بين المصفوفات و Arraylists
على الرغم من أن المصفوفات والمصفوفات متشابهة بمعنى أن كلاهما يستخدم لتخزين مجموعات من العناصر ، إلا أنهما يختلفان في كيفية تعريفها. يجب تحديد حجم المصفوفة عند تعريف المصفوفة ، ولكن يمكنك تحديد مصفوفة قائمة دون معرفة الحجم الفعلي. يمكنك إضافة عناصر إلى مصفوفة بعد تعريفها وهذا غير ممكن مع المصفوفات. لكن في Java ، لا يمكن للمصفوفات الاحتفاظ بأنواع بدائية ، ولكن يمكن استخدام المصفوفات للاحتفاظ بالأنواع البدائية. ولكن إذا كنت بحاجة إلى بنية بيانات يمكن أن تختلف في حجمها ، فسيكون المصفوف هو الخيار الأفضل.