غالبًا ما تتضمن البرمجة إدارة ومعالجة مجموعات كبيرة من البيانات، والتي تعتبر هياكل البيانات الفعالة والفعالة أمرًا بالغ الأهمية. المصفوفات هي بنية بيانات أساسية في علوم الكمبيوتر وتوفر وسيلة لتخزين تسلسل ثابت الحجم من العناصر من نفس النوع. في هذه المدونة، سنأخذ رحلة متعمقة عبر المصفوفات في Java: فهم ماهيتها، وصياغتها، وكيفية العمل عليها، وإدارة ذاكرتها.
عند العمل مع المتغيرات في Java، يمكنك الإعلان عن كل متغير وتهيئته على حدة، مثل:
java int a = 19; String name = "John Doe";
ومع ذلك، يصبح هذا الأسلوب غير فعال إذا كنت بحاجة إلى التعامل مع قيم متعددة من نفس النوع. على سبيل المثال، إذا كنت ستقوم بتخزين أرقام أو أسماء متعددة، فإن الترميز الثابت لكل قيمة ليس عمليًا. المصفوفات مفيدة لأنها تسمح لك بتخزين مجموعة من القيم بكفاءة. على سبيل المثال، إذا كنت بحاجة إلى تخزين خمسة أرقام رول، فيمكنك استخدام المصفوفات.
المصفوفة هي في الأساس مجموعة من عناصر البيانات من نفس النوع. يمكن للمصفوفات تخزين أنواع البيانات البدائية مثل الأعداد الصحيحة والعوامات والأحرف، بالإضافة إلى الكائنات. على سبيل المثال:
int[] rollNumbers = new int[5]; String[] names = {"Alice", "Bob", "Charlie"};
إن بناء جملة الإعلان عن مصفوفة في Java واضح ومباشر:
dataType[] arrayName = new dataType[size];
على سبيل المثال، لإنشاء مصفوفة مكونة من خمسة أعداد صحيحة:
int[] rollNumbers = new int[5];
بدلاً من ذلك، يمكنك الإعلان عن مصفوفة وتهيئتها في سطر واحد:
int[] rollNumbers = {23, 55, 9, 18, 45};
في المصفوفة، يجب أن تكون جميع العناصر من نفس النوع. لا يمكنك مزج الأنواع ضمن مصفوفة واحدة؛ على سبيل المثال:
int[] nums = {1, 2, "three"}; // Will cause a compile-time error
بمجرد إنشاء المصفوفة، يتم تحديد حجمها. لا يمكنك توسيع أو تقليص حجمها. يمكن أن يؤدي هذا القيد غالبًا إلى اختيار هياكل بيانات أخرى، مثل ArrayList، لتلبية متطلبات بيانات أكثر ديناميكية.
تتكون المصفوفات في جافا من:
عندما تعلن عن مصفوفة، يتم إنشاء المرجع في ذاكرة المكدس، ويتم تخزين كائن المصفوفة في ذاكرة الكومة.
هناك مرحلتان حاسمتان في تخصيص ذاكرة المصفوفة:
على سبيل المثال:
int[] rollNumbers; // Declaration rollNumbers = new int[5]; // Initialization
تقوم Java بتخصيص الذاكرة الديناميكية، مما يعني أنه في وقت التشغيل، تقوم بتخصيص الذاكرة حسب الحاجة، مما يجعلها فعالة في إدارة الذاكرة.
لملء مصفوفة بإدخال المستخدم، يمكنك استخدام حلقة مع ماسح ضوئي لقراءة المدخلات من وحدة التحكم.
Scanner scanner = new Scanner(System.in); int[] arr = new int[5]; for (int i = 0; iمصفوفات الطباعة
يمكنك طباعة المصفوفات باستخدام الحلقات أو طريقة الأداة المساعدة Arrays.toString() للحصول على مخرجات أكثر قابلية للقراءة.
for (int i = 0; iأو
System.out.println(Arrays.toString(arr));المصفوفات متعددة الأبعاد
المصفوفات أو المصفوفات ثنائية الأبعاد هي مصفوفات من المصفوفات. يبدو بناء جملة المصفوفة ثنائية الأبعاد كما يلي:
int[][] matrix = new int[3][3];مثال
int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };للإدخال الديناميكي للعناصر في مصفوفة ثنائية الأبعاد، يتم استخدام الحلقات المتداخلة.
ArrayList: بديل ديناميكي
المصفوفات في Java ذات حجم ثابت، مما يؤدي إلى عدم الكفاءة عندما يكون عدد العناصر غير معروف في وقت الترجمة. يمكن التغلب على هذا القيد باستخدام فئة ArrayList، وهي جزء من Java Collections Framework.
باستخدام قائمة المصفوفة
توفر فئة ArrayList تغيير الحجم الديناميكي. إليك بناء الجملة لإنشاء ArrayList:
ArrayListnumbers = new ArrayList(); يمكنك إضافة العناصر ومعالجتها ديناميكيًا:
numbers.add(1); numbers.add(2); numbers.add(3); System.out.println(numbers); // Output: [1, 2, 3] numbers.set(1, 10); // Change element at index 1 System.out.println(numbers); // Output: [1, 10, 3] numbers.remove(0); // Remove element at index 0 System.out.println(numbers); // Output: [10, 3] boolean contains = numbers.contains(10); // Check if the list contains 10 System.out.println(contains); // Output: trueالعمل الداخلي لقائمة ArrayList
داخليًا، يستخدم ArrayList صفائف ديناميكية بسعة ثابتة أولية. عند استنفاد هذه السعة، يتم إنشاء مصفوفة جديدة ذات سعة أكبر، ويتم نسخ العناصر الموجودة عليها. تضمن هذه العملية أن ArrayList يمكن أن تنمو ديناميكيًا عند إضافة العناصر.
عمليات المصفوفة المشتركة
العثور على العناصر القصوى
للعثور على الحد الأقصى للعنصر في المصفوفة، قم بالتكرار عبر المصفوفة وتتبع أعلى قيمة:
int max = arr[0]; for (int i = 1; i max) { max = arr[i]; } } System.out.println("Maximum value: " max);عكس مصفوفة
لعكس مصفوفة، استخدم تقنية المؤشرين:
public static void reverse(int[] arr) { int start = 0; int end = arr.length - 1; while (startاستدعاء الدالة العكسية:
int[] arr = {1, 2, 3, 4, 5}; reverse(arr); System.out.println(Arrays.toString(arr)); // Output: [5, 4, 3, 2, 1]خاتمة
المصفوفات هي بنية بيانات مهمة في Java، مما يتيح تخزين مجموعات البيانات ومعالجتها بكفاءة. على الرغم من أن المصفوفات ثابتة الحجم، إلا أنها قوية ومتعددة الاستخدامات عند التعامل مع أنواع البيانات المتجانسة. لتلبية احتياجات البيانات الديناميكية، توفر ArrayList مرونة إضافية، مما يسمح بالنمو التعسفي في الحجم. إن فهم هذه الهياكل وعملياتها يضع الأساس لمزيد من البرمجة المتقدمة وإدارة البيانات. علاوة على ذلك، فإن ممارسة عمليات المصفوفة وفهم إدارة الذاكرة الأساسية الخاصة بها يساعد في كتابة تعليمات برمجية أكثر كفاءة وتحسينًا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3