«لصق» المصفوفات في Java: 5 طرق مثبتة (مع كود)
مرحباً أيها الزميل! إذا كنت تقرأ هذا النص، فهذا يعني أنك واجهت مهمة تظهر عاجلاً أم آجلاً أمام كل مطور Java — كيفية دمج مصفوفتين في Java؟ قد يبدو الأمر بسيطاً؟ خذ واجمع. لكن الأمر ليس بهذه السهولة. في Java لا يوجد عامل أصلي لربط المصفوفات (كما في Python أو JavaScript). وهنا يبدأ الجزء المثير للاهتمام.
على Stack Overflow، جمع سؤال «How can I concatenate two arrays in Java?» مئات الآلاف من المشاهدات. هذا يعني أنه حتى المطورين ذوي الخبرة يضيعون أحياناً في الاختيار. في هذا البرنامج التعليمي، سأريك 5 طرق عملية — من النسخ اليدوي «القديم» إلى Stream API الحديث. ستتعرف على إيجابيات وسلبيات كل نهج وستتمكن من اختيار النهج المناسب لمهمتك.
هيا بنا!
لماذا لا توجد طريقة بسيطة لدمج المصفوفات في Java؟
المصفوفة في Java هي كائن بطول ثابت. لا يمكنك ببساطة «إضافة» مصفوفة إلى نهاية أخرى. تحتاج إلى إنشاء مصفوفة جديدة ونسخ العناصر إليها. لكن لا تقلق — سأريك كيفية القيام بذلك بأناقة وبدون ألم.
الطريقة 1: النسخ اليدوي (لمن يحب التحكم الكامل)
الطريقة الأكثر وضوحاً ووضوحاً. نقوم بإنشاء مصفوفة جديدة، طولها يساوي مجموع طولي المصفوفتين الأصليتين، ونملؤها في حلقة.
public class ArrayConcatManual { public static void main(String[] args) { int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6};
int[] result = new int[array1.length + array2.length];
// نسخ المصفوفة الأولى for (int i = 0; i < array1.length; i++) { result[i] = array1[i]; }
// نسخ المصفوفة الثانية for (int i = 0; i < array2.length; i++) { result[array1.length + i] = array2[i]; }
// إظهار النتيجة for (int num : result) { System.out.print(num + " "); } // الإخراج: 1 2 3 4 5 6 }}الإيجابيات: تحكم كامل، لا يتطلب مكتبات خارجية، سهل القراءة.
السلبيات: مطول، سهولة الخطأ في الفهارس (خاصة إذا كان هناك أكثر من مصفوفتين).
نصيحة: استخدم هذه الطريقة إذا كنت تريد فهم كيفية عمل كل شيء «تحت الغطاء»، أو إذا كنت تكتب كوداً لأغراض تعليمية.
الطريقة 2: System.arraycopy() — الأداة القياسية
في Java، هناك طريقة مدمجة System.arraycopy(). تعمل بشكل أسرع من الحلقة اليدوية لأنها تستخدم كوداً أصلياً (native method). هذه هي الطريقة الموصى بها للإنتاج.
import java.util.Arrays;
public class ArrayConcatSystem { public static void main(String[] args) { String[] fruits1 = {"apple", "banana"}; String[] fruits2 = {"cherry", "date"};
String[] result = new String[fruits1.length + fruits2.length];
System.arraycopy(fruits1, 0, result, 0, fruits1.length); System.arraycopy(fruits2, 0, result, fruits1.length, fruits2.length);
System.out.println(Arrays.toString(result)); // الإخراج: [apple, banana, cherry, date] }}كيف يعمل هذا:
- الوسيطة الأولى — المصفوفة المصدر.
- الثانية — الموضع البداية في المصفوفة المصدر (عادة 0).
- الثالثة — المصفوفة الهدف.
- الرابعة — الموضع البداية في المصفوفة الهدف.
- الخامسة — عدد العناصر المنسوخة.
الإيجابيات: سريع، مضغوط، مكتبة قياسية.
السلبيات: تحتاج إلى مراقبة الفهارس، قد يرمي ArrayIndexOutOfBoundsException.
الطريقة 3: ArrayList والمجموعات — المرونة والراحة
إذا كنت لا تحتاج فقط إلى دمج المصفوفات، بل أيضاً إلى العمل معها لاحقاً (إضافة، حذف)