
إن حل مشكلة نسخ مصفوفة ثنائية الأبعاد ليس مباشرًا مثل نسخ مصفوفة 2D لأن مجرد نسخ المراجع إلى المصفوفات الداخلية لن يؤدي إلى إنشاء نسخ عميقة من المصفوفات الفرعية نفسها. هناك عدة طرق لحل هذه المشكلة ، وسنناقش إحدى هذه الطرق بالتفصيل ، وهي فحص الكود خطوة بخطوة وتنفيذها.
أولاً ، لنقم بإنشاء دالة تنسخ مصفوفة ثنائية الأبعاد:
public static int [] [] copy2DArray (int [] [] original) {
int [] [] copy = new int [original.length] [] ؛
لـ (int i = 0؛ i <original.length؛ i ++) {copy [i] = Arrays.copyOf (original [i]، original [i] .length) ؛ } عودة نسخة؛ } [/ code] في الكود أعلاه ، نبدأ بتعريف دالة تسمى "copy2DArray" تأخذ مصفوفة عدد صحيح ثنائي الأبعاد ، تسمى ** original ** ، كمعامل لها. بعد تحديد الوظيفة ، نقوم بعد ذلك بإنشاء مصفوفة ثنائية الأبعاد جديدة ، تسمى ** copy ** ، بنفس طول المصفوفة الأصلية. ثم نستخدم حلقة for للتكرار خلال عناصر المصفوفة الأصلية ونسخها إلى المصفوفة الجديدة باستخدام الطريقة `Arrays.copyOf ()` من مكتبة `java.util.Arrays`. تنشئ هذه الطريقة نسخة عميقة من المصفوفات الفرعية. أخيرًا ، نعيد نسخة المصفوفة ثنائية الأبعاد.
فهم المصفوفات ثنائية الأبعاد
في Java ، المصفوفة ** 2D ** هي في الأساس مصفوفة من المصفوفات. يمكن تصورها كجدول به صفوف وأعمدة. يمكن الوصول إلى العناصر باستخدام مؤشرين: أحدهما للصف والآخر للعمود. عند العمل باستخدام المصفوفات ثنائية الأبعاد في Java ، من الضروري تتبع كلا المؤشرين ، حتى تتمكن من الوصول إلى البيانات ومعالجتها بشكل صحيح.
- يتم إنشاء مصفوفة ثنائية الأبعاد باستخدام الصيغة التالية:
`dataType [] [] arrayName = new dataType [rowSize] [columnSize] ؛` - يمكن الوصول إلى العناصر الموجودة في مصفوفة ثنائية الأبعاد باستخدام مؤشرين: `arrayName [row] [عمود] ؛`
- عادةً ما يتضمن التكرار عبر مصفوفة ثنائية الأبعاد حلقات متداخلة.
قبل الغوص أكثر في مجموعة نسخ في 2D، من المهم أن تفهم سبب أهمية إنشاء نسخ عميقة من المصفوفات الفرعية. لن تقوم النسخة الضحلة إلا بنسخ الإشارات إلى المصفوفات الفرعية ، وأي تغييرات يتم إجراؤها على الأصل ستؤثر أيضًا على النسخة. من خلال إنشاء نسخ عميقة ، نضمن ألا تؤثر التغييرات في إحدى المصفوفات على الأخرى.
مكتبة Java.util.Arrays
في حلنا ، استخدمنا مكتبة "java.util.Arrays" ، التي توفر طرقًا مفيدة للعمل مع المصفوفات. بالنسبة للمشكلة المحددة لنسخ مصفوفة ثنائية الأبعاد ، استخدمنا طريقة Arrays.copyOf () `لإنشاء نسخ عميقة من المصفوفات الفرعية.
- ينشئ الأسلوب `` Arrays.copyOf () `نسخة عميقة من المصفوفة الأصلية. يتطلب الأمر معلمتين: المصفوفة الأصلية وطول المصفوفة الجديدة.
- تتضمن الطرق المفيدة الأخرى في هذه المكتبة Arrays.fill () `و Arrays.sort ()` و Arrays.binarySearch () `.
في الختام ، يتطلب نسخ مصفوفة ثنائية الأبعاد في Java نسخة عميقة لمنع التغييرات في المصفوفة الأصلية من التأثير على النسخة. لقد أظهرنا حلاً باستخدام طريقة `Arrays.copyOf ()` من مكتبة `java.util.Arrays` ، وكانت الوظيفة التي تم إنشاؤها فعالة وسهلة الفهم. من خلال فهمنا العميق للمصفوفات ثنائية الأبعاد ومكتبة Java.util.Arrays ومعالجة المصفوفات ، يمكننا الآن مواجهة التحديات الأخرى بثقة أكبر وحلول أكثر قوة في Java.