في Java، تعد المصفوفة بنية بيانات خطية مهمة تسمح لنا بتخزين قيم متعددة من نفس النوع.
- المصفوفات في Java هي كائنات مثل كافة الكائنات الأخرى في مصفوفات Java ترث ضمنيًا من فئة java.lang.Object. يسمح لك هذا باستدعاء الأساليب المحددة في الكائن (مثل toString () يساوي () و hashCode ()).
- تحتوي المصفوفات على خاصية الطول المضمنة والتي توفر عدد العناصر في المصفوفة
public class Geeks { public static void main(String[] args) { // initializing array int[] arr = {40 55 63 17 22}; // size of array int n = arr.length; // traversing array for (int i = 0; i < n; i++) System.out.print(arr[i] + ' '); } }
الإخراج
40 55 63 17 22
الملامح الرئيسية للمصفوفات
- تخزين البدائيات والكائنات: يمكن لمصفوفات Java أن تحتوي على كلا النوعين البدائيين (مثل int char boolean وما إلى ذلك) والكائنات (مثل String Integer وما إلى ذلك)
- تخصيص الذاكرة المتجاورة عندما نستخدم مصفوفات من الأنواع البدائية، يتم تخزين العناصر في مواقع متجاورة. بالنسبة للأنواع غير البدائية، يتم تخزين مراجع العناصر في مواقع متجاورة.
- الفهرسة الصفرية: العنصر الأول من المصفوفة موجود في الفهرس 0.
- طول ثابت: بعد إنشاء المصفوفة، يصبح حجمها ثابتًا؛ لا يمكننا تغييره.
تمثيل المصفوفة البدائية في جافا
تمثيل المصفوفات غير البدائية في Javaأساسيات العملية على المصفوفات في جافا
1. الإعلان عن مصفوفة
الشكل العام لإعلان المصفوفة هو
// الطريقة الأولى:
int arr[];// الطريقة الثانية:
int[] آر;
يحدد نوع العنصر نوع بيانات كل عنصر يتكون من المصفوفة. مثل مصفوفة الأعداد الصحيحة، يمكننا أيضًا إنشاء مصفوفة من أنواع البيانات البدائية الأخرى مثل char float double وما إلى ذلك أو أنواع البيانات المحددة من قبل المستخدم (كائنات من فئة).
ملحوظة: إنها الطريقة التي يمكننا من خلالها إنشاء متغير مصفوفة ولا يوجد مصفوفة فعلية. إنه يخبر المترجم فقط أن هذا المتغير (int Array) سيحتوي على مصفوفة من النوع الصحيح.
2. تهيئة صفيف في جافا
عندما يتم الإعلان عن مصفوفة، يتم إنشاء مرجع للمصفوفة فقط. نستخدم new لتخصيص مصفوفة ذات حجم معين.
int arr[] = new int[size];
- يكون إعلان المصفوفة ثابتًا بشكل عام، ولكن إذا لم يتم تحديد الحجم، فسيتم تغيير حجم المصفوفة ديناميكيًا.
- يتم دائمًا تخصيص ذاكرة المصفوفات ديناميكيًا (في مقطع الكومة) في Java. وهذا يختلف عن C/C++ حيث يمكن تخصيص الذاكرة بشكل ثابت أو تخصيصها ديناميكيًا.
- ستتم تهيئة العناصر الموجودة في المصفوفة المخصصة بواسطة new تلقائيًا إلى صفر (للأنواع الرقمية) أو خطأ (للأنواع المنطقية) أو خالية (للأنواع المرجعية).
صفيف حرفي في جافا
في الحالة التي يكون فيها حجم المصفوفة ومتغيراتها معروفة بالفعل، يمكن استخدام القيم الحرفية للمصفوفة.
0.2 ككسر
// الإعلان عن المصفوفة بشكل حرفي
int[] arr = new int[]{ 12345678910 };
- يحدد طول هذا المصفوفة طول المصفوفة التي تم إنشاؤها.
- ليست هناك حاجة لكتابة الجزء الجديد int[] في أحدث إصدارات Java.
3. تغيير عنصر الصفيف
لتغيير عنصر، قم بتعيين قيمة جديدة إلى فهرس محدد. يبدأ الفهرس بـ 0 وينتهي عند (إجمالي حجم المصفوفة) -1.
// تغيير العنصر الأول إلى 90
آر[0] = 90;
4. طول المصفوفة
يمكننا الحصول على طول المصفوفة باستخدام خاصية الطول:
// الحصول على طول المصفوفة
int n = arr.length;
5. الوصول إلى كافة عناصر المصفوفة وتحديثها
- يمكن الوصول إلى جميع عناصر المصفوفة باستخدام Java for Loop.
- يتم الوصول إلى كل عنصر في المصفوفة عبر الفهرس الخاص به.
الوصول إلى جميع عناصر المصفوفة وتحديثهابرنامج Java لتوضيح كيفية إنشاء مصفوفة من الأعداد الصحيحة، يضع بعض القيم في المصفوفة ويطبع كل قيمة إلى الإخراج القياسي
Javaclass Geeks { public static void main(String[] args) { // declares an Array of integers. int[] arr; // allocating memory for 5 integers. arr = new int[5]; // initialize the elements of the array // first to last(fifth) element arr[0] = 2; arr[1] = 4; arr[2] = 8; arr[3] = 12; arr[4] = 16; // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at index ' + i + ' : ' + arr[i]); } }
الإخراج
Element at index 0 : 2 Element at index 1 : 4 Element at index 2 : 8 Element at index 3 : 12 Element at index 4 : 16
مصفوفات الكائنات في جافا
يتم إنشاء مجموعة من الكائنات مثل مجموعة من عناصر البيانات من النوع البدائي
مثال : نحن هنا نأخذ فصلًا دراسيًا للطلاب وننشئ مصفوفة من الطلاب تحتوي على خمسة كائنات للطلاب مخزنة في المصفوفة. يجب إنشاء كائنات الطالب باستخدام مُنشئ فئة الطالب ويجب تعيين مراجعها لعناصر المصفوفة.
class Student { public int roll_no; public String name; Student(int roll_no String name){ this.roll_no = roll_no; this.name = name; } } public class Geeks { public static void main(String[] args){ // declares an Array of Student Student[] arr; // allocating memory for 5 objects of type Student. arr = new Student[5]; // initialize the elements of the array arr[0] = new Student(1 'aman'); arr[1] = new Student(2 'vaibhav'); arr[2] = new Student(3 'shikar'); arr[3] = new Student(4 'dharmesh'); arr[4] = new Student(5 'mohit'); // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at ' + i + ' : { ' + arr[i].roll_no + ' ' + arr[i].name+' }'); } }
الإخراج
Element at 0 : { 1 aman } Element at 1 : { 2 vaibhav } Element at 2 : { 3 shikar } Element at 3 : { 4 dharmesh } Element at 4 : { 5 mohit } ماذا يحدث إذا حاولنا الوصول إلى عناصر خارج حجم المصفوفة؟
يقوم JVM بطرح ArrayIndexOutOfBoundsException للإشارة إلى أنه تم الوصول إلى المصفوفة باستخدام فهرس غير قانوني. يكون الفهرس إما سالبًا أو أكبر من أو يساوي حجم المصفوفة.
يوضح الكود أدناه ما يحدث إذا حاولنا الوصول إلى عناصر خارج حجم المصفوفة:
Javapublic class Geeks { public static void main(String[] args) { int[] arr = new int[4]; arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; System.out.println( 'Trying to access element outside the size of array'); System.out.println(arr[5]); } }
الإخراج:
إخراج العناصر خارج حجم المصفوفةتمرير المصفوفات إلى الأساليب
مثل المتغيرات، يمكننا أيضًا تمرير المصفوفات إلى الأساليب. على سبيل المثال، يقوم البرنامج أدناه بتمرير المصفوفة إلى الطريقة sum لحساب مجموع قيم المصفوفة.
مثال:
برنامج رئيسي في جافاJava
public class Geeks { // Driver method public static void main(String args[]) { int arr[] = { 3 1 2 5 4 }; // passing array to method m1 sum(arr); } public static void sum(int[] arr) { // getting sum of array values int sum = 0; for (int i = 0; i < arr.length; i++) sum += arr[i]; System.out.println('sum of array values : ' + sum); } }
الإخراج
sum of array values : 15
توضيح
- يوضح برنامج Java هذا كيفية تمرير مصفوفة إلى إحدى الطرق.
- تم الإعلان عن مصفوفة عدد صحيح وتهيئتها في الطريقة الرئيسية.
- يتم استدعاء الأسلوب sum() باستخدام arr كوسيطة.
- داخل طريقة sum() تتم إضافة جميع عناصر المصفوفة باستخدام حلقة for.
- ثم تتم طباعة المبلغ النهائي على وحدة التحكم.
إرجاع المصفوفات من الأساليب
كالعادة، يمكن للطريقة أيضًا إرجاع مصفوفة. على سبيل المثال، يقوم البرنامج أدناه بإرجاع مصفوفة من الطريقة m1.
مثال:
Javaclass Geeks { // Driver method public static void main(String args[]) { int arr[] = m1(); for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + ' '); } public static int[] m1() { // returning array return new int[] { 1 2 3 }; } }
الإخراج
1 2 3
مزايا مصفوفات جافا
- الوصول الفعال: يعد الوصول إلى عنصر ما من خلال فهرسه سريعًا وله تعقيد زمني ثابت O(1).
- إدارة الذاكرة: المصفوفات لها حجم ثابت مما يجعل إدارة الذاكرة واضحة ويمكن التنبؤ بها.
- تنظيم البيانات: تساعد المصفوفات في تنظيم البيانات بطريقة منظمة مما يسهل إدارة العناصر ذات الصلة.
عيوب مصفوفات جافا
- الحجم الثابت: بمجرد إنشاء المصفوفة، لا يمكن تغيير حجمها مما قد يؤدي إلى إهدار الذاكرة إذا تم المبالغة في تقدير الحجم أو عدم كفاية التخزين إذا تم التقليل من حجمه.
- نوع التجانس: يمكن للمصفوفات فقط تخزين العناصر من نفس نوع البيانات والتي قد تتطلب معالجة إضافية لأنواع مختلطة من البيانات.
- الإدراج والحذف: قد يكون إدراج العناصر أو حذفها خاصة في منتصف المصفوفة مكلفًا لأنه قد يتطلب تغيير العناصر.
المشاركات ذات الصلة
- صفيف خشنة في جافا
- لكل حلقة في جافا
- فئة المصفوفات في جافا