אתחול מערכים ב- Java

1. סקירה כללית

במדריך מהיר זה, נראה את הדרכים השונות בהן אנו יכולים לאתחל מערך ואת ההבדלים הדקים בין אלה.

2. אלמנט אחד בכל פעם

נתחיל בשיטה פשוטה ומבוססת על לולאה:

עבור (int i = 0; i <array.length; i ++) {array [i] = i + 2; }

ובואו גם לראות כיצד נוכל לאתחל מערך רב מימדי אחד אלמנט בכל פעם:

עבור (int i = 0; i <2; i ++) {for (int j = 0; j <5; j ++) {array [i] [j] = j + 1; }}

3. בזמן ההצהרה

בוא נתחיל כעת מערך בזמן ההכרזה:

מערך מיתרים [] = מחרוזת חדשה [] {"טויוטה", "מרצדס", "BMW", "פולקסווגן", "סקודה"};

בעת הפעלת המערך, איננו צריכים לציין את סוגו:

מערך int [] = {1, 2, 3, 4, 5};

שים לב שלא ניתן לאתחל מערך לאחר ההצהרה באמצעות גישה זו. ניסיון לעשות זאת יביא לשגיאת אוסף.

4. שימוש Arrays.fill ()

ה java.util. מערכים בכיתה יש כמה שיטות בשם למלא() שמקבלים סוגים שונים של ארגומנטים וממלאים את כל המערך באותו ערך:

מערך ארוך [] = חדש ארוך [5]; Arrays.fill (מערך, 30);

לשיטה יש גם כמה חלופות שקובעות טווח של מערך לערך מסוים:

מערך int [] = int int [5]; Arrays.fill (מערך, 0, 3, -50);

שים לב שהשיטה מקבלת את המערך, את אינדקס האלמנט הראשון, את מספר האלמנטים ואת הערך.

5. שימוש Arrays.copyOf ()

השיטה Arrays.copyOf () יוצר מערך חדש על ידי העתקת מערך אחר. לשיטה עומסי יתר רבים שמקבלים סוגים שונים של טיעונים.

בואו נראה דוגמה מהירה:

מערך int [] = {1, 2, 3, 4, 5}; int [] copy = Arrays.copyOf (מערך, 5);

כמה הערות כאן:

  • השיטה מקבלת את מערך המקור ואת אורך העותק שייווצר
  • אם האורך גדול מאורך המערך שיש להעתיק, האלמנטים הנוספים יאותחלו באמצעות ערכי ברירת המחדל שלהם
  • אם מערך המקור לא אותחל, אז NullPointerException נזרק
  • אם אורך מערך המקור הוא שלילי, אז NegativeArraySizeException נזרק

6. שימוש Arrays.setAll ()

השיטה Arrays.setAll () מגדיר את כל האלמנטים של המערך באמצעות פונקציית מחולל:

int [] מערך = int int [20]; Arrays.setAll (מערך, p -> p> 9? 0: p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

אם פונקציית הגנרטור היא אפסית, אז NullPointerException נזרק.

7. שימוש ArrayUtils.clone ()

לבסוף, בואו נשתמש ב- ArrayUtils.clone () API מתוך Apache Commons Lang 3 - שמאתחל מערך על ידי יצירת עותק ישיר של מערך אחר:

char [] array = char חדש [] {'a', 'b', 'c'}; char [] copy = ArrayUtils.clone (array);

שים לב ששיטה זו עמוסה יתר על המידה לכל הסוגים הפרימיטיביים.

8. מסקנה

במאמר זה בחנו דרכים שונות לאתחול מערכים ב- Java.

כמו תמיד, הגרסה המלאה של הקוד זמינה ב- GitHub.