المسارات
/
Java
Java
/
المنهج
/
المصفوفات
ال

المصفوفات في Java

24 تمرينًا

نبذة عن المصفوفات

في Java، المصفوفات وسيلة لتخزين عدة قيم من النوع نفسه في بنية واحدة. وبخلاف بُنى البيانات الأخرى، يكون حجم المصفوفة ثابتًا بمجرد إنشائها. يمكن إسناد العناصر إلى المصفوفة أو استرجاعها منها باستخدام فهرس. تستخدم مصفوفات Java فهرسة تبدأ من الصفر: فهرس العنصر الأول هو 0، وفهرس العنصر الثاني هو 1، وهكذا.

هذه هي الصيغة القياسية لتهيئة مصفوفة:

type[] variableName = new type[size];

يشير type إلى نوع العناصر في المصفوفة، وقد يكون نوعًا أوليًا (مثل int) أو صنفًا (مثل String).

ويشير size إلى عدد العناصر التي ستضمّها المصفوفة (وهو عدد لا يمكن تغييره لاحقًا). بعد إنشاء المصفوفة، تُهيّأ العناصر إلى قيمها الافتراضية (عادةً 0 أو false أو null).

// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];

يمكن أيضًا تعريف المصفوفات باستخدام صيغة مختصرة تتيح لك إنشاء المصفوفة وتحديد قيمها في الوقت نفسه:

// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };

ولأن المترجم يمكنه الآن معرفة عدد العناصر التي ستضمّها المصفوفة، يمكن حذف الطول.

يمكن إسناد عناصر المصفوفة والوصول إليها باستخدام تدوين الفهرس بين الأقواس المربعة:

// Assign second element by index
twoInts[1] = 8;

// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];

يؤدي الوصول إلى فهرس خارج الفهارس الصالحة للمصفوفة إلى ظهور IndexOutOfBoundsException.

يمكن التعامل مع المصفوفات إما باستدعاء طرق نسخة المصفوفة أو خصائصها، وإما باستخدام الطرق الساكنة المعرّفة في صنف Arrays (وهو ما يُستخدم عادةً فقط في الكود الجنيس). تحمل خاصية length طول المصفوفة. ويمكن الوصول إليها كالتالي:

int arrayLength = someArray.length;

وتوفّر Java أيضًا صنف أدوات مفيدًا هو java.util.Arrays يضم الكثير من الطرق المفيدة المتعلقة بالمصفوفات (مثل Arrays.equals).

تدعم Java أيضًا المصفوفات متعددة الأبعاد مثل int[][] arr = new int[3][4];، وقد تكون مفيدة جدًا.

ولكون المصفوفة مجموعة أيضًا، فبالإضافة إلى الوصول إلى القيم عبر الفهرس، يمكنك المرور على جميع قيمها باستخدام حلقة for-each:

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

for(char vowel: vowels) {
    // Output the vowel
    System.out.print(vowel);
}

// => aeiou

وإذا أردت تحكمًا أكبر في القيم التي تمرّ عليها، يمكنك استخدام حلقة for:

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

for (int i = 0; i < 3; i++) {
    // Output the vowel
    System.out.print(vowels[i]);
}

// => aei
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم المصفوفات