Java Arrays
المصفوفة (array) عبارة عن كائن يحتوي على عناصر من نوع بيانات مشابه لتخزين قيم متعددة في متغير واحد.
المصفوفة بنية بيانات حيث نقوم بتخزين العناصر المتشابهة بها + يمكننا تخزين مجموعة ثابتة فقط من العناصر في مصفوفة Java.
المصفوفة قائمة على الـ index (الفهرس)، يتم تخزين العنصر الأول من المصفوفة في الفهرس رقم 0 ، ثم العنصر الثاني في الفهرس رقم 1 وهكذا.
أنواع المصفوفات في Java
هناك نوعان من المصفوفة:
- صفيف أحادي البعد Single Dimensional
- صفيف متعدد الأبعاد Multidimensional
Single Dimensional Array in Java
بناء الجملة للإعلان عن مصفوفة:
// First method
dataType[] arr;
// Second method
dataType []arr;
// Third method
dataType arr[];
مثال لإنشاء مصفوفة بها قيم string و integer:
// Array of Strings
String[] numbers_str = {"One", "Two", "Three", "Four", "Five"};
// Array of Integers
int[] numbers_int = {1, 2, 3, 4, 5};
💡 لاحظ يُكتب قيم المصفوفة داخل أقواس متعرجة {} وبين كل قيمة والأخرى تم وضع comma (,).
Access Elements of an Array
يمكنك الوصول إلى عنصر صفيف بالرجوع إلى رقم الفهرس index.
💡 تبدأ فهارس المصفوفة بـ 0 (أى رقم [0] هو العنصر الأول، ورقم [1] هو العنصر الثاني ، وهكذا).
مثال للتوضيح:
String[] numbers_str = {"One", "Two", "Three", "Four", "Five"};
System.out.println(numbers_str[1]); // outputs = Two
Change an Array Element
يمكنك تغيير قيمة عنصر معين عن طريق رقم الفهرس:
String[] numbers_str = {"One", "Two", "Three", "Four", "Five"};
System.out.println(numbers_str[1]); // outputs = Two
numbers_str[1] = "Ten";
System.out.println(numbers_str[1]); // outputs = Ten not Two
For-each Loop for Java Array
يمكننا أيضًا طباعة مصفوفة Java باستخدام حلقة for-each + تطبع حلقة Java لكل عنصر عناصر المصفوفة واحدة تلو الأخرى.
بناء جملة for-each كالتالى:
for(data_type variable:array){
// Body of the loop
}
مثال للتوضيح:
String[] numbers_arr = {"One", "Two", "Three", "Four", "Five"};
for(String i: numbers_arr){
System.out.println("Number is: " + i);
}
outputs:
Number is: One
Number is: Two
Number is: Three
Number is: Four
Number is: Five
Array Length
لمعرفة عدد العناصر التي يحتوي عليها المصفوفة ، استخدم خاصية length، كالتالى:
String[] numbers_arr = {"One", "Two", "Three", "Four", "Five"};
System.out.println(numbers_arr.length); // outputs = 5
Multidimensional Array in Java
في هذه الحالة ، يتم تخزين البيانات في index قائم على الصف(row) والعمود(column).
بناء الجملة للإعلان عن مصفوفة متعددة الأبعاد في جافا:
// First Method
dataType[][] arrayVar;
// Second Method
dataType [][]arrayVar;
// Third Method
dataType arrayVar[][];
// Fourth Method
dataType []arrayVar[];
مثال للتوضيح:
int[][] numbers_arr = { {1, 2, 3}, {10, 20, 30} };
int[][] numbers_arr = { {1, 2, 3}, {10, 20, 30} };
int myChoose = numbers_arr[1][2];
System.out.println(myChoose); // outputs = 30
For Loop through Multidimensional Array
يمكننا أيضًا استخدام for loop داخل for loop أخرى للحصول على عناصر مصفوفة ثنائية الأبعاد (يجب عليك أيضًا الإشارة إلى الفهارسين):
int[][] numbers_arr = { {1, 2, 3}, {10, 20, 30} };
for(int i = 0; i < numbers_arr.length; i++){
for(int x = 0; x < numbers_arr[i].length; x++){
System.out.println(numbers_arr[i][x]);
}
}
output:
1
2
3
10
20
30
Cloning an Array in Java
يمكننا استنساخ مصفوفة فى Java، إذا أنشأنا استنساخ لمصفوفة أحادية البعد، فإنه ينشئ النسخة العميقة (deep copy) من مصفوفة Java، هذا يعني أنه سيتم نسخ القيمة الفعلية ولكن إذا أنشأنا استنساخ مصفوفة متعددة الأبعاد ، فإنه ينشئ النسخة السطحية (shallow copy) لصفيف Java مما يعني أنه ينسخ المراجع.
مثال للتوضيح:
int[] numbers_arr = {1, 2, 3};
System.out.println("Original array: ");
for(int i:numbers_arr)
System.out.println(i);
int cloneNums[] = numbers_arr.clone();
System.out.println("Clone array: ");
for(int x:cloneNums)
System.out.println(x);
outputs:
Original array:
1
2
3
Clone array:
1
2
3
💡 مزايا المصفوفة:
- تحسين الكود: المصفوفة تجعل الكود أحسن وأنظف + يمكننا استرجاع أو فرز البيانات بكفاءة.
- الوصول العشوائي: فى المصفوفة يمكننا الحصول على أي بيانات موجودة في موضع الفهرس index.
💡 عيب المصفوفة:
- حد الحجم: يمكننا تخزين الحجم الثابت للعناصر فقط في المصفوفة.
الإبلاغ عن خطأ
×إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:
info@albashmoparmeg.com
شكرًا لك على مساعدتك لنا!