Arraylist לעומת וקטור
ניתן לראות ברשימת מערך כמערך דינמי, שיכול לגדול בגודלו. מסיבה זו, המתכנת אינו צריך לדעת את גודל ה-arraylist כאשר הוא/היא מגדיר אותו. ניתן לראות בוקטור גם כמערך שיכול לגדול בגודלו. ניתן להקצות וקטורים בקלות וניתן להשתמש בהם כאשר הגודל הנדרש של האחסון אינו ידוע עד לזמן הריצה.
מהו Arraylist?
ניתן לראות ברשימת מערך כמערך דינמי, שיכול לגדול בגודלו. לכן רשימות מערכים אידיאליות לשימוש במצב שבו אינך יודע את גודל האלמנטים הנדרשים בזמן ההכרזה.ב-Java, רשימות מערכים יכולות להחזיק רק אובייקטים, הם לא יכולים להחזיק טיפוסים פרימיטיביים ישירות (אתה יכול לשים את הטיפוסים הפרימיטיביים בתוך אובייקט או להשתמש במחלקות העטיפה של הטיפוסים הפרימיטיביים). בדרך כלל רשימות מערכים מסופקות עם שיטות לביצוע הוספה, מחיקה וחיפוש. מורכבות הזמן של גישה לאלמנט היא o(1), בעוד שלהכנסה ומחיקה יש מורכבות זמן של o(n). בג'אווה, ניתן לעבור בין רשימות מערכים באמצעות לולאות מקדימות, איטרטורים או פשוט באמצעות האינדקסים. ב-Java, רשימות מערכים הוצגו מגרסה 1.2 והיא חלק מ-Java Collections Framework.
מהו וקטור?
וקטור הוא גם מערך שיכול לגדול בגודלו. ניתן להקצות וקטורים בקלות וניתן להשתמש בהם כאשר הגודל הנדרש של האחסון אינו ידוע עד זמן הריצה. וקטורים גם יכולים להחזיק רק אובייקטים ולא יכולים להחזיק טיפוסים פרימיטיביים. הוקטורים מסונכרנים, ולכן ניתן להשתמש בהם בבטחה בסביבות מרובות הליכי. הוקטורים מסופקים עם שיטות להוספת אובייקטים, מחיקת אובייקטים וחיפוש אובייקטים.בדומה ל-arraylist ב-java, ניתן לעבור על וקטורים באמצעות לולאות foreach, iterators או פשוט באמצעות האינדקסים. כשמדובר ב-Java, וקטורים נכללו מאז הגרסה הראשונה של Java.
מה ההבדל בין Arraylist ל-Vector?
למרות שגם רשימות המערכים וגם הוקטורים דומים מאוד למערכים דינמיים שיכולים לגדול בגודלם, יש להם כמה הבדלים חשובים. ההבדל העיקרי בין רשימות מערכים לוקטורים הוא שהווקטורים מסונכרנים ואילו רשימות מערכים אינן מסונכרנות. לכן שימוש ב-arraylists בסביבות ריבוי הליכי לא יהיה מתאים, בעוד וקטורים יכולים לשמש בבטחה בסביבות ריבוי הליכי (מכיוון שהם בטוחים בשרשור). אבל סנכרון בוקטורים יגרום להפחתה בביצועים. לכן זה לא יהיה רעיון טוב להשתמש בוקטורים בסביבה משורשרת אחת. באופן פנימי, גם רשימות מערכים וגם וקטורים משתמשים במערכים כדי להחזיק אובייקטים. כאשר המרחב הנוכחי אינו מספיק, וקטורים יכפילו את גודל המערך הפנימי שלו, בעוד שרשימות מערכים מגדילות את גודל המערך הפנימי שלו ב-50%.אבל כאשר משתמשים גם ברשימת המערכים וגם בוקטורים, על ידי מתן קיבולת ראשונית מתאימה, ניתן למנוע שינוי גודל מיותר של המערך הפנימי. במצב שקצב הצמיחה של נתונים ידוע, שימוש בוקטורים יהיה מתאים יותר מכיוון שניתן להגדיר את הערך המצטבר של וקטורים.