הבדל בין מערכים ל-Arraylists

הבדל בין מערכים ל-Arraylists
הבדל בין מערכים ל-Arraylists

וִידֵאוֹ: הבדל בין מערכים ל-Arraylists

וִידֵאוֹ: הבדל בין מערכים ל-Arraylists
וִידֵאוֹ: Eau de Toilette vs Eau de Parfum 2024, יולי
Anonim

מערכים לעומת רשימות מערכים

מערכים הם מבנה הנתונים הנפוץ ביותר לאחסון אוסף של אלמנטים. רוב שפות התכנות מספקות שיטות להכריז בקלות על מערכים וגישה לאלמנטים במערכים. ניתן לראות ברשימת מערך כמערך דינמי, שיכול לגדול בגודלו. מסיבה זו, המתכנתת אינה צריכה לדעת את גודל ה-arraylist כאשר היא מגדירה אותו.

מהם מערכים?

מוצג באיור 1, הוא קטע קוד המשמש בדרך כלל להכרזה והקצאת ערכים למערך. איור 2 מתאר כיצד ייראה מערך בזיכרון.

int values[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

איור 1: קוד להכרזה והקצאת ערכים למערך

100 101 102 103 104
אינדקס: 0 1 2 3 4

איור 2: מערך מאוחסן בזיכרון

מעל הקוד, מגדיר מערך שיכול לאחסן 5 מספרים שלמים והגישה אליהם מתבצעת באמצעות מדדים 0 עד 4. תכונה חשובה אחת של מערך היא שמערך שלם מוקצה כגוש זיכרון בודד וכל אלמנט מקבל את שלו שטח משלו במערך.לאחר הגדרת מערך, גודלו קבוע. אז אם אתה לא בטוח לגבי גודל המערך בזמן ההידור, תצטרך להגדיר מערך גדול מספיק כדי להיות בצד הבטוח. אבל, רוב הפעמים, אנחנו בעצם הולכים להשתמש במספר קטן יותר של אלמנטים ממה שהקצנו. אז כמות ניכרת של זיכרון בעצם מבוזבזת. מצד שני, אם "המערך הגדול מספיק" אינו גדול מספיק, התוכנית תתרסק.

מהם Arraylists?

ניתן לראות ברשימת מערך כמערך דינמי, שיכול לגדול בגודלו. לכן רשימות מערכים אידיאליות לשימוש במצב שבו אינך יודע את גודל האלמנטים הנדרשים בזמן ההכרזה. ב-Java, רשימות מערכים יכולות להחזיק רק אובייקטים, הם לא יכולים להחזיק טיפוסים פרימיטיביים ישירות (אתה יכול לשים את הטיפוסים הפרימיטיביים בתוך אובייקט או להשתמש במחלקות העטיפה של הטיפוסים הפרימיטיביים). בדרך כלל רשימות מערכים מסופקות עם שיטות לביצוע הוספה, מחיקה וחיפוש. מורכבות הזמן של גישה לאלמנט היא o(1), בעוד שלהכנסה ומחיקה יש מורכבות זמן של o(n).ב-Java, ניתן לעבור בין רשימות מערכים באמצעות לולאות מקדימות, איטרטורים או פשוט באמצעות האינדקסים.

מה ההבדל בין מערכים ל-Arraylists

למרות שהמערכים ורשימות המערכים דומים במובן זה ששניהם משמשים לאחסון אוספי אלמנטים, הם שונים באופן ההגדרה שלהם. יש לתת את גודל המערך כאשר מערך מוגדר, אך ניתן להגדיר רשימת מערך מבלי לדעת את הגודל האמיתי. ניתן להוסיף אלמנטים לרשימת מערכים לאחר הגדרתה וזה לא אפשרי עם מערכים. אבל ב-Java, רשימות מערכים לא יכולות להחזיק טיפוסים פרימיטיביים, אבל ניתן להשתמש במערכים כדי להחזיק טיפוסים פרימיטיביים. אבל אם אתה צריך מבנה נתונים שיכול לשנות את גודלו, arraylist תהיה הבחירה הטובה ביותר.

מוּמלָץ: