CodeGym /בלוג Java /Random-HE /המרת מערך ל-ArrayList ב-Java
John Squirrels
רָמָה
San Francisco

המרת מערך ל-ArrayList ב-Java

פורסם בקבוצה
היי! בשיעור של היום, נדבר על איך לאתחל מערך ב-Java ואיך להמיר מערך ל-Arraylist. מערכים הם הרחבה של מחלקת Container ב-Java ויכולים להיות שימושיים כדרך להחזיק זמנית קבוצה של סוגי נתונים פרימיטיביים כאשר כמות הנתונים ידועה באופן ספציפי. אבל מערכים הם סטטיים כאשר הם נוצרים, מה שאומר שכאשר אתה יוצר אחד, אתה לא יכול לשנות את מספר הפריטים שהוא מכיל. עליך לזכור כיצד לאתחל מערך ב-java; זה נראה כמו זה:
datatype[] isArray;
כאשר datatype הוא כל סוג נתונים פרימיטיבי כמו int, float, long, או אפילו String. אתה יכול גם למקם את הסוגריים לאחר ההצהרה כך:
datatype isArray[];
אז איך ניקח את המערך הסטטי הזה עם מספר מוגדר של אלמנטים ונמיר אותו ל-ArrayList? ובכן, ראשית, בואו נסתכל על מה זה ArrayList.

ה-ArrayList

ל-ArrayList עשוי להיות שם דומה למערך, אך הוא מטופל בצורה שונה לחלוטין. זה בגלל ש-ArrayList לא מרחיב את המחלקה Container, הוא מרחיב את המחלקה List. וזה אומר שהכל מטופל אחרת. ראשית, מכיוון שזו רשימה, אתה יכול לתפעל אותה אחרת. אתה יכול להגדיל או להקטין את גודל ה-ArrayList באמצעות add(element) , הממקם את האלמנט בסוף הרשימה ומגדיל את הגודל באחד במידת הצורך. לחלופין, אתה יכול להשתמש ב-trimToSize() שמסיר כל מדדים ריקים בסוף וחותך את ArrayList לגודלה הנוכחי. אז אתה יכול לראות שיש כמה יתרונות לשימוש ב- ArrayList במקום רק במערך. בשלב הבא נראה לך שתי שיטות להמרה ממערך ל-ArrayList וכיצד לחזור אחורה אם אתה צריך.

מעבר ממערך ל-ArrayList ומ-ArrayList למערך ב-Java

אז, נניח שכתבת תוכנית לניהול מלאי של כמה ברגים יש לחברה שלך בהישג יד לתיקון עצי חתול. במשך שנים, אתה צריך רק 30 סוגים שונים שלהם, אז זה היה קל פשוט להשתמש במערך כדי לעקוב. אבל עכשיו יש לך לקוח חדש שדורש ממך להחזיק 5 סוגים נוספים. איך אתה יכול לשנות את התוכנית שלך ולשמור את כל הנתונים שלך, ולמנוע מעצמך לעשות זאת שוב כשאתה אוסף לקוח אחר? זה נכון! ArrayList! אז איך ממירים מערך Java ל-ArrayList? יש שלוש שיטות. שימוש בשיטת .asList() למערכים של Java יש כלי נהדר שתוכל לראות כאשר אתה מסתכל על ה-API שנקרא .asList() . אז אתה יכול פשוט לכתוב בזה:
boltInventory.asList(bolts);
הבעיה בשיטה זו היא שהיא לא יוצרת ArrayList אמיתי. מה שהוא עושה זה ליצור רשימה קבועה בגודלה ולא ניתנת לשינוי. אז אתה עדיין לא יכול לשנות את הגודל בצורה דינמית. ניסיון להוסיף או להסיר אלמנטים יגרום לחריגה. אז אמנם יש לזה שימושים, אבל זה לא המרה אמיתית. אבל אנחנו יכולים להשתמש בזה. שימוש ב- .asList() כארגומנט זו הדרך השנייה להמיר מערך לרשימה ב-Java. מכיוון שהמתודה .asList() יוצרת רשימה, אנו יכולים להשתמש בה כדי להעביר הפניה ל-ArrayList בפועל. הנה איך לאתחל ArrayList:
ArrayList<Integer> boltsInventory = new ArrayList<Integer>();
פעולה זו תיצור ArrayList הכוללת עשרה תאים ריקים. עם זאת, ניתן להשתמש ב- () בסוף כדי להעביר ארגומנט למילוי ArrayList. אז בשילוב עם שיטת .asList , יש לך:
ArrayList<Integer> boltsInventory = new ArrayList<Integer>(Arrays.asList(bolts));
זה מעביר את הרשימה שנוצרה על ידי שיטת .asList() לתוך ArrayList, אז עכשיו אתה יכול לתפעל אותה באופן דינמי לפי הצורך. שימוש בשיטת Collections.addAll() דרך נוספת להמיר מערך ל-ArrayList ב-Java היא להשתמש בשיטה זו. הוא מעביר את תוכן המערך ל-ArrayList. התחביר הגנרי לשיטה זו הוא:
Collections.addAll(c, T);
כאשר c הוא היעד ו- T הוא מה שעובר. אז עבור הדוגמה שלנו, התחביר ייראה כך:
ArrayList<Integer> boltsInventory = new ArrayList<Integer>():
Collections.addAll(boltsInventory, bolts);
זה יעביר את כל התוכן של ברגי המערך ל-ArrayList החדש. המרת ArrayList למערך עשוי להיות זמן שבו אתה צריך להמיר ArrayList למערך ב-Java. אם כן, ל-ArrayList יש שיטה .toArray(a) , כאשר a הוא היעד. אז עבור הדוגמה שלנו, התחביר יהיה:
Integer boltsInventoryArray[] = new Integer{boltsInventory.size()];
// this ensures the newly created array is of the same size as the ArrayList
boltsInventoryArray = boltsInventory.toArray(boltsInventoryArray);
כאשר אתה משנה רשימה למערך ב-Java כך, אתה יוצר עותק עמוק. כלומר, כל ההפניות למערך שונות מההפניות ל-ArrayList. אז אתה יכול לתפעל את הנתונים במערך מבלי לשנות את הנתונים המאוחסנים ב-ArrayList. זה שימושי להמיר רשימת Java למערך כאשר אתה צריך לבדוק נתונים.

סיכום

מערכים שימושיים מאוד לגישה מהירה ולמניפולציה מהירה של מערכי נתונים קטנים יותר, אך חוסר היכולת לשנות את גודלם גורם לכך שהם מאבדים במהירות את היעילות לשימוש ארוך טווח. ArrayList נותן לך את הגמישות הזו ואת היכולת להכניס ולהסיר צמתים לפי הצורך. לימוד כיצד להמיר מערך Java לרשימה ישפר את היעילות הכוללת של התוכניות שלך וישפר גם את זמני הריצה שלהן.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION