خاصية المصفوفات (Arrays) في جافا هي هيكل بيانات يُستخدم لتخزين مجموعة ثابتة الحجم من العناصر من نفس النوع. تُعتبر المصفوفات كائنات في جافا، ولها خصائص وطرق مُحددة للتعامل معها. إليك شرح مُفصّل لخاصية المصفوفات في جافا:
مفهوم المصفوفات:
- مجموعة مُرتبة: تُخزّن المصفوفة العناصر بترتيب مُتسلسل في الذاكرة، حيث يُمكن الوصول إلى كل عنصر بواسطة فهرسه (index).
- حجم ثابت: عند إنشاء مصفوفة، يجب تحديد حجمها، ولا يُمكن تغيير هذا الحجم لاحقًا.
- نوع مُتجانس: يجب أن تكون جميع العناصر في المصفوفة من نفس نوع البيانات (مثل
int
للأعداد الصحيحة،String
للنصوص،double
للأعداد العشرية، إلخ). - الفهرسة الصفرية: يبدأ فهرس أول عنصر في المصفوفة من الصفر، يليه 1 للعنصر الثاني، وهكذا.
إنشاء المصفوفات:
يُمكن إنشاء المصفوفات في جافا بطريقتين:
-
التصريح والتهيئة في سطر واحد:
Javaint[] numbers = {1, 2, 3, 4, 5}; // إنشاء مصفوفة أعداد صحيحة وتعبئتها بالقيمString[] names = {"Ali", "Ahmed", "Sara"}; // إنشاء مصفوفة نصوص وتعبئتها بالقيم -
التصريح أولاً ثم التهيئة:
Javaint[] numbers = new int[5]; // إنشاء مصفوفة أعداد صحيحة بحجم 5 (جميع العناصر ستكون قيمتها 0 افتراضيًا)numbers[0] = 10; // تعيين قيمة للعنصر الأولnumbers[1] = 20; // تعيين قيمة للعنصر الثاني// ... وهكذا
الوصول إلى عناصر المصفوفة:
يتم الوصول إلى عناصر المصفوفة باستخدام الفهرس الخاص بها داخل أقواس مربعة []
:
int[] numbers = {10, 20, 30};int firstNumber = numbers[0]; // firstNumber سيحتوي على القيمة 10int secondNumber = numbers[1]; // secondNumber سيحتوي على القيمة 20
طول المصفوفة:
يُمكن الحصول على طول المصفوفة (عدد عناصرها) باستخدام الخاصية length
:
int[] numbers = {1, 2, 3, 4, 5};int arrayLength = numbers.length; // arrayLength سيحتوي على القيمة 5
التعامل مع المصفوفات:
توفر جافا بعض الطرق المُفيدة للتعامل مع المصفوفات، مثل:
-
الحلقات التكرارية: تُستخدم الحلقات
for
وfor-each
للمرور على جميع عناصر المصفوفة وتنفيذ عمليات عليها.Javaint[] numbers = {1, 2, 3, 4, 5};for (int i = 0; i < numbers.length; i++) {System.out.println(numbers[i]);}for (int number : numbers) { // حلقة for-each أبسط للمرور على جميع العناصرSystem.out.println(number);} -
الصنف
Arrays
: يوفر الصنفjava.util.Arrays
طرقًا مُفيدة للتعامل مع المصفوفات، مثل:Arrays.sort()
: لترتيب عناصر المصفوفة.Arrays.binarySearch()
: للبحث عن عنصر في مصفوفة مُرتبة.Arrays.equals()
: لمُقارنة مصفوفتين.Arrays.copyOf()
: لنسخ جزء من مصفوفة أو مصفوفة كاملة.
مثال على استخدام الصنف Arrays
:
import java.util.Arrays;
public class Main { public static void main(String[] args) { int[] numbers = {5, 2, 8, 1, 9}; Arrays.sort(numbers); // ترتيب المصفوفة تصاعديًا System.out.println(Arrays.toString(numbers)); // طباعة المصفوفة بعد الترتيب: [1, 2, 5, 8, 9]
int index = Arrays.binarySearch(numbers, 5); // البحث عن العنصر 5 System.out.println("Index of 5: " + index); // طباعة فهرس العنصر 5: 2 }}
مزايا المصفوفات:
- الوصول السريع للعناصر: يُمكن الوصول إلى أي عنصر في المصفوفة بوقت ثابت باستخدام فهرسه.
- بنية بيانات بسيطة وفعّالة: تُعتبر المصفوفات من أبسط وأسرع هياكل البيانات.
عيوب المصفوفات:
- الحجم الثابت: لا يُمكن تغيير حجم المصفوفة بعد إنشائها، ممّا قد يُؤدي إلى هدر في الذاكرة إذا تم حجز حجم أكبر من اللازم، أو إلى مشاكل إذا احتاج البرنامج إلى تخزين عدد أكبر من العناصر من الحجم المُحدد.
- إضافة وحذف العناصر مُكلف: إضافة أو حذف عنصر من مصفوفة يتطلب إنشاء مصفوفة جديدة ونسخ جميع العناصر إليها، باستثناء العنصر المُراد حذفه أو مع إضافة العنصر الجديد في المكان المناسب.
باختصار، تُعتبر المصفوفات أداة قوية وفعّالة لتخزين ومعالجة مجموعات البيانات المُتجانسة ذات الحجم الثابت في جافا. ومع ذلك، يجب الانتباه إلى محدودية حجمها الثابت عند استخدامها. إذا كنت بحاجة إلى هيكل بيانات يُمكن تغيير حجمه ديناميكيًا، فمن الأفضل استخدام هياكل بيانات أخرى مثل ArrayList
.