Arrays.fill وcopyOf
املؤوا المصفوفات وغيّروا حجمها
Arrays.fill وcopyOf درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
ملء المصفوفات
تعيّن Arrays.fill كل عنصر في المصفوفة إلى القيمة نفسها. وتعدّل المصفوفة في موضعها، وهي مفيدة لتهيئة البيانات أو إعادة ضبطها.
ملء أساسي
املأ مصفوفة كاملة بقيمة واحدة.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[5];
Arrays.fill(nums, 7);
System.out.println(Arrays.toString(nums));
}
}ملء نطاق
تملأ Arrays.fill(array, from, to, value) جزءًا فقط من المصفوفة. ويكون النطاق شاملًا لـ from وغير شامل لـ to.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[6];
Arrays.fill(nums, 2, 5, 9);
System.out.println(Arrays.toString(nums));
}
}ملء مصفوفات الكائنات
يعمل Fill مع مصفوفات الكائنات أيضًا. لاحظ أن كل موضع يشير إلى المرجع نفسه عند الملء باستخدام كائن.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] grid = new String[4];
Arrays.fill(grid, "empty");
System.out.println(Arrays.toString(grid));
}
}تغيير الحجم باستخدام copyOf
للمصفوفات طول ثابت. وللحصول على مصفوفة أكبر أو أصغر، تُرجع Arrays.copyOf(array, newLength) مصفوفة جديدة بالحجم المطلوب.
تكبير مصفوفة
عندما يكون الطول الجديد أكبر، تحصل المواضع الإضافية على القيمة الافتراضية: 0 للأنواع الرقمية، وfalse للنوع المنطقي، وnull للكائنات.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
int[] bigger = Arrays.copyOf(nums, 5);
System.out.println(Arrays.toString(bigger));
}
}تقليص مصفوفة
عندما يكون الطول الجديد أصغر، تُقتطع المصفوفة وتُحذف العناصر الموجودة في نهايتها.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5};
int[] smaller = Arrays.copyOf(nums, 3);
System.out.println(Arrays.toString(smaller));
}
}نسخ جزء من نطاق
تنسخ Arrays.copyOfRange(array, from, to) جزءًا إلى مصفوفة جديدة. مرة أخرى، يكون from شاملًا وto غير شامل.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {10, 20, 30, 40, 50};
int[] middle = Arrays.copyOfRange(nums, 1, 4);
System.out.println(Arrays.toString(middle));
}
}لا يغيّر copyOf المصفوفة
على عكس fill، لا يغيّر copyOf المصفوفة الأصلية، بل يعيد مصفوفة جديدة تمامًا. وتكون المصفوفة الأصلية والنسخة مستقلتين.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 3);
copy[0] = 99;
System.out.println("Original: " + Arrays.toString(original));
System.out.println("Copy: " + Arrays.toString(copy));
}
}أسلوب تغيير الحجم يدويًا
قبل ظهور ArrayList، كانت البرامج توسّع المصفوفات عبر نسخها إلى مصفوفة أكبر. يضاعف copyOf السعة باستدعاء واحد.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] data = {1, 2, 3, 4};
data = Arrays.copyOf(data, data.length * 2);
data[4] = 5;
System.out.println(Arrays.toString(data));
}
}fill مقابل copyOf
تذكّر الفرق: يستبدل fill الخانات الموجودة في موضعها ويعيد void، بينما ينشئ copyOf نسخة ذات حجم جديد ويعيدها. اختر الأسلوب المناسب بناءً على حاجتك إلى طول جديد.
اختبار سريع
اختبر مدى فهمك لـ fill وcopyOf.
مراجعة
لقد تعلّمت كيفية ملء المصفوفات وتغيير حجمها.
- تضبط
Arrays.fillجميع العناصر، أو نطاقًا منها، على قيمة واحدة في موضعها. - تعيد
Arrays.copyOfمصفوفة جديدة بطول محدد، مع ملء الخانات الإضافية أو اقتطاع العناصر. - تنسخ
Arrays.copyOfRangeجزءًا من المصفوفة. - لا يغيّر copyOf المصفوفة الأصلية، بينما يغيّرها fill.
الأسئلة الشائعة
هل درس «Arrays.fill وcopyOf» مجاني؟
نعم — نص درس «Arrays.fill وcopyOf» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «Arrays.fill وcopyOf»؟
املؤوا المصفوفات وغيّروا حجمها تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Arrays.fill وcopyOf»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Arrays.sort والفرز
- Arrays.binarySearch
- Arrays.fill وcopyOf
- الدالتان Arrays.equals وtoString