المصفوفات المتعرجة (Jagged Arrays)
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 6 من 59.
المصفوفة المتعرجة (jagged array) هي نوع خاص من المصفوفات ثنائية الأبعاد (2D array) حيث يمكن أن يحتوي كل صف على عدد مختلف من الأعمدة. بعبارة أخرى، هي مصفوفة من المصفوفات، ويمكن أن تكون كل مصفوفة "داخلية" بطول مختلف. وهذا يختلف عن المصفوفة العادية ثنائية الأبعاد، حيث تحتوي جميع الصفوف على نفس العدد من الأعمدة، مما يشكل شكلاً مستطيلاً.
تُعد المصفوفات المتعرجة (Jagged arrays) مفيدة عندما تحتاج إلى تخزين بيانات لا تتناسب تماماً مع شبكة مستطيلة. على سبيل المثال، قد تستخدم مصفوفة متعرجة لتخزين الكلمات في كل جملة من فقرة ما، حيث تحتوي كل جملة على عدد مختلف من الكلمات.
إليك كيفية التصريح عن مصفوفة متعرجة (jagged array) وتهيئتها في Java:
data_type[][] array_name = new data_type[number_of_rows][];
// تهيئة كل صف بعدد مختلف من الأعمدة
array_name[0] = new data_type[number_of_columns_in_row_0];
array_name[1] = new data_type[number_of_columns_in_row_1];
// ... وهكذالاحظ أنه عند التصريح عن المصفوفة لأول مرة، فإنك تحدد عدد الصفوف فقط. بعد ذلك، تقوم بتهيئة كل صف على حدة، مع تحديد عدد الأعمدة لذلك الصف.
التحدي
سهلقم بإنشاء طريقة (method) تسمى createJaggedArray تأخذ عدداً صحيحاً n كمدخل وتعيد مصفوفة مسننة (jagged array) من الأعداد الصحيحة. يجب أن يكون للمصفوفة المسننة الهيكل التالي:
- يجب أن يحتوي الصف الأول على عنصر واحد.
- يجب أن يحتوي الصف الثاني على عنصرين.
- يجب أن يحتوي الصف الثالث على 3 عناصر.
- وهكذا، وصولاً إلى الصف
n، والذي يجب أن يحتوي علىnمن العناصر.
قم بتهيئة كل عنصر في المصفوفة بحاصل ضرب فهارس الصف والعمود الخاصة به (بدءاً من 1). على سبيل المثال، العنصر الموجود في الصف الثاني والعمود الأول يجب أن تكون قيمته 2 * 1 = 2.
ورقة مرجعية
المصفوفة المتعرجة (Jagged array) هي مصفوفة ثنائية الأبعاد حيث يمكن أن يحتوي كل صف على عدد مختلف من الأعمدة، على عكس المصفوفات ثنائية الأبعاد العادية حيث يكون لجميع الصفوف نفس الطول.
للإعلان عن مصفوفة متعرجة وتهيئتها:
data_type[][] array_name = new data_type[number_of_rows][];
// تهيئة كل صف بعدد مختلف من الأعمدة
array_name[0] = new data_type[number_of_columns_in_row_0];
array_name[1] = new data_type[number_of_columns_in_row_1];
// ... وهكذاعند الإعلان عن مصفوفة متعرجة، فإنك تحدد عدد الصفوف فقط في البداية، ثم تقوم بتهيئة كل صف بشكل منفصل بعدد الأعمدة الخاص به.
جرّب بنفسك
// اكتب كودك فقط داخل الفئة (class). لا تكتب main() أو أي كود خارج هذه الفئة.
class CreateJaggedArray {
public static int[][] createJaggedArray(int n) {
// اكتب كودك هنا
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم