تدعم Java ، مثل معظم لغات البرمجة القوية الأخرى ، صفائف متعددة الأبعاد ، مثل صفائف ثنائية الأبعاد وثلاثية الأبعاد. سابقا ناقشنا حول العمل مع صفائف ذات أبعاد واحدة في جافا. في هذا البرنامج التعليمي ، دعنا نناقش حول مصففين ثنائي الأبعاد و 3 أبعاد. يتم تطبيق نفس المبادئ على صفائف الأبعاد الأعلى أيضًا.
2 صفيف الأبعاد في جافا
هناك طريقتان لتنفيذ ثنائي الأبعادصفائف. تحتفظ العديد من اللغات بذاكرة كبيرة بما يكفي لاحتواء جميع عناصر المصفوفة الكاملة والمستطيلة (عدد الصفوف مضروبًا في عدد الأعمدة مضروبًا في حجم العنصر). جافا لا تفعل ذلك. بدلاً من ذلك ، تقوم Java ببناء مصفوفات متعددة الأبعاد من العديد من المصفوفات أحادية البعد ، وهو ما يسمى نهج "صفائف المصفوفات".
يتم تعريف المصفوفات ثنائية الأبعاد على أنها "صفيفالمصفوفات ". نظرًا لأن نوع الصفيف من نوع Java من الدرجة الأولى ، فيمكن أن يكون لدينا صفيف من الدرجات أو صفيف من السلاسل أو صفيف من الكائنات. على سبيل المثال ، سوف يكون صفيف ints من نوع int []. وبالمثل ، يمكن أن يكون لدينا int [] [] ، الذي يمثل "صفيف من صفائف المدخلات". ويقال أن مثل هذا الصفيف هو صفيف ثنائي الأبعاد.
الأمر التالي:
int[][] twodimArray = new int[3][4];
تعلن متغير ، twodimArray ، من النوعint [] [] ، ويهيئ هذا المتغير للإشارة إلى كائن تم إنشاؤه حديثًا. هذا الكائن عبارة عن مصفوفة من صفائف الأحبار. هنا ، تشير العلامة int [3] [4] إلى أن هناك 3 صفائف للداخل في الصفيف twodimArray ، وأن هناك 4 بوصات في كل صفائف.
هناك بعض النتائج المثيرة للاهتمام لهذا: قد تكون الصفوف بأحجام مختلفة. أيضًا ، كل صف هو كائن (صفيف) يمكن استخدامه بشكل مستقل.
إعلان
int[][] a1; // Declares, but doesn't allocate, 2-dim array.
توزيع
كما هو الحال مع جميع المصفوفات ، يجب استخدام الكلمة الأساسية الجديدة لتخصيص ذاكرة لصفيف. فمثلا،
int[][] a1 = new int[3][4];
أو:
int[][] a1; a1 = new int[3][4];
أو:
double[][] ID3 = { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}};
هذا يخصص صفيف int مع 3 صفوف و 4 أعمدة. كما هو الحال مع جميع الكائنات ، تتم تهيئة القيم إلى الصفر (على عكس المتغيرات المحلية غير المهيأة).
هذا يخصص في الواقع 5 كائنات: صفيف أحادي البعد من 4 عناصر لكل صف ، وصفيف أحادي البعد من 3 عناصر ، مع كل عنصر يشير إلى صفيف الصف المناسب.
معالجة
غالبًا ما تتم معالجة المصفوفات ثنائية الأبعاد مع تداخل الحلقات. لاحظ في المثال التالي كيفية معالجة الصفوف ككائنات منفصلة.
برنامج جافا
public class TwoDimArrayDemo{ public static void main(String[] args) { int[][] twoDimArray = new int[3][4]; for (int i=0; i<twoDimArray.length; i++) { for (int j=0; j<twoDimArray[i].length; j++) { twoDimArray[i][j] = i; System.out.print(" " + twoDimArray[i][j]); } System.out.println(""); } } }
انتاج |
3 صفيف الأبعاد في جافا
برنامج جافا
class Array3D{ public static void main(String args[]){ int[][][] a2 = new int[2][2][4]; for (int i = 0; i < a2.length; i++) for (int j = 0; j < a2[i].length; j++) for (int k = 0; k < a2[i][j].length; k++) System.out.println("a2[" + i + "][" + j + "][" + k + "] = "+ a2[i][j][k]); } }
انتاج |
شرح الكود والمخرجات
تتم معالجة الصفيف متعدد الأبعاد من خلالحلقات متداخلة. بالنسبة للصفيف ذي الأبعاد n ، تحتاج إلى عدد n من الحلقات المتداخلة. كما قلت ، القيمة الافتراضية لكل موضع من المصفوفة هي "0". وقد ثبت ذلك من خلال إخراج مصفوفة ثلاثية الأبعاد.
اطلع على المزيد من البرامج التعليمية المفيدة والمبادئ التوجيهية النهائية حول برمجة Java هنا.
تعليقات