JavaRush /مدونة جافا /Random-AR /مصفوفات جافا
articles
مستوى

مصفوفات جافا

نشرت في المجموعة

المصفوفات

المصفوفة عبارة عن بنية بيانات تقوم بتخزين قيم من نفس النوع. يتم الوصول إلى عنصر صفيف فردي باستخدام فهرس عدد صحيح. على سبيل المثال، إذا كانت a عبارة عن مصفوفة من الأعداد الصحيحة، فإن قيمة التعبير a[i] تساوي العدد الصحيح i في المصفوفة. مصفوفات جافا - 1يتم تعريف المصفوفة على النحو التالي: أولاً، تتم الإشارة إلى نوع المصفوفة، أي نوع العناصر الموجودة في المصفوفة، متبوعًا بزوج من الأقواس المربعة الفارغة، ثم اسم المتغير. على سبيل المثال، إليك كيفية الإعلان عن مصفوفة تتكون من أعداد صحيحة:
int[] a;
ومع ذلك، هذه العبارة تعلن فقط عن متغير а، دون تهيئته بمصفوفة فعلية. لإنشاء مصفوفة، تحتاج إلى استخدام عامل التشغيل new.
int[] a = new int [100];
يقوم هذا العامل بإنشاء مصفوفة مكونة من 100 عدد صحيح. يتم ترقيم عناصر هذه المصفوفة من 0 إلى 99 (وليس من 1 إلى 100). بمجرد إنشائه، يمكن ملء المصفوفة، على سبيل المثال، باستخدام حلقة.
int[] а = new int[100];
for (int i = 0; i < 100; i++)
 a[i] = i; //Заполняет массив числами от 0 до 99
إذا حاولت الوصول إلى عنصر а [100](أو أي عنصر آخر فهرسه يقع خارج النطاق من 0 إلى 99) عن طريق إنشاء مصفوفة مكونة من 100 عنصر، فسيتم إنهاء البرنامج بسبب حدوث استثناء لفهرس مصفوفة خارج النطاق. لحساب عدد العناصر في المصفوفة، استخدم طريقة اسم المصفوفة .length. على سبيل المثال،
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
بمجرد إنشاء المصفوفة، من المستحيل تغيير حجمها (على الرغم من أنه يمكنك، بالطبع، تغيير عناصرها الفردية). إذا كنت بحاجة إلى تغيير حجم المصفوفة بشكل متكرر أثناء تنفيذ البرنامج، فمن الأفضل استخدام بنية بيانات أخرى تسمى قائمة المصفوفات. يمكن الإعلان عن المصفوفة بطريقتين:
int[] a;
or
int a[];
يفضل معظم مبرمجي Java النمط الأول لأنه يفصل بشكل أكثر وضوحًا بين نوع المصفوفة int [](مصفوفة صحيحة) واسم المتغير.

مُهيئات الصفيف والمصفوفات غير المسماة

تتمتع Java بإمكانية إنشاء مصفوفة وتهيئتها في نفس الوقت. فيما يلي مثال على هذا الهيكل النحوي:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
لاحظ أنه في هذه الحالة ليست هناك حاجة لاستخدام عامل التشغيل new. بالإضافة إلى ذلك، يمكنك أيضًا تهيئة مصفوفة غير مسماة:
new int[] {16, 19, 23, 29, 31, 37}
يخصص هذا التعبير الذاكرة لمصفوفة جديدة ويملأها بالأرقام المحددة بين الأقواس المتعرجة. في هذه الحالة، يتم حساب عددهم، وبالتالي يتم تحديد حجم المصفوفة. يعد هذا البناء النحوي مناسبًا للاستخدام لإعادة تهيئة المصفوفة دون إنشاء متغير جديد. على سبيل المثال، التعبير
smallPrimes = new int{17, 19, 23, 29, 31, 37};
هو تعبير مختصر
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
يمكنك إنشاء مجموعة بحجم صفر. يمكن أن يكون مثل هذا المصفوفة مفيدًا عند كتابة عملية تقوم بتقييم مصفوفة يتبين أنها فارغة. يتم تعريف المصفوفة ذات الطول الصفري على النحو التالي:
new тип Элементов[]
لاحظ أن مثل هذه المصفوفة لا تعادل كائنًا null.

نسخ المصفوفات

يمكن نسخ مصفوفة واحدة إلى مصفوفة أخرى، لكن كلا المتغيرين سيشيران إلى نفس المصفوفة.
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; //Теперь элемент smallPrimes[5]также equals 12
وتظهر النتيجة في الشكل. 3.1. إذا كنت بحاجة إلى نسخ جميع عناصر مصفوفة إلى أخرى، فيجب عليك استخدام طريقة arraycopy من الفئة System. تبدو دعوتها كما يلي:
System.arraycopy(from, fromlndex, to, tolndex, count);
يجب أن يكون المصفوفة toكبيرة بما يكفي لتحتوي على كافة العناصر المراد نسخها. مصفوفات جافا - 2
الشكل 3.1. نسخ مصفوفة
على سبيل المثال، العوامل الموضحة أدناه، والتي تظهر نتائجها في الشكل. 3.2، قم بإنشاء صفيفين ثم انسخ العناصر الأربعة الأخيرة من المصفوفة الأولى إلى الثانية. يبدأ النسخ من الموضع الثاني في المصفوفة المصدر، وتوضع العناصر المنسوخة في المصفوفة الهدف بدءًا من الموضع الثالث.
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
تنفيذ هذه العبارات ينتج النتيجة التالية.
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
مصفوفات جافا - 3
أرز. 3.2. نسخ عناصر المصفوفة
تختلف المصفوفة في Java اختلافًا كبيرًا عن المصفوفة في C++. ومع ذلك، فهو عمليًا نفس المؤشر إلى مصفوفة ديناميكية. وهذا يعني أن المشغل
int[] a = new int[100]; //Java
يعادل المشغل
int* = new int[100]; //C++,
а не
int a[100]; //C++
في Java، []يتحقق عامل التشغيل الافتراضي من نطاق تغييرات الفهرس. بالإضافة إلى ذلك، لا تحتوي Java على مؤشر حسابي — لا يمكنك زيادة المؤشر للوصول إلى العنصر التالي في المصفوفة. رابط المصدر: صفائف جافا
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION