logo

ההבדל בין ArrayList ל-LinkedList

ArrayList ו-LinkedList מיישמים את ממשק List ושומרים על סדר ההכנסה. שניהם מחלקות לא מסונכרנות.

פורמט מחרוזת java ארוך

עם זאת, ישנם הבדלים רבים בין המחלקות ArrayList ו-LinkedList המפורטות להלן.

רשימת מערךרשימה מקושרת
1) ArrayList משתמש באופן פנימי ב- a מערך דינמי לאחסן את האלמנטים.LinkedList משתמש באופן פנימי ב- a רשימה מקושרת כפולה לאחסן את האלמנטים.
2) מניפולציה עם ArrayList היא לְהַאֵט מכיוון שהוא משתמש במערך פנימי. אם אלמנט כלשהו מוסר מהמערך, כל שאר האלמנטים מוזזים בזיכרון.מניפולציה עם LinkedList היא מהיר יותר מאשר ArrayList מכיוון שהוא משתמש ברשימה מקושרת כפולה, כך שלא נדרשת הסטת סיביות בזיכרון.
3) מחלקה ArrayList יכולה לפעול כרשימה רק בגלל שהוא מיישם רשימה בלבד.כיתת LinkedList יכולה לפעול כרשימה ותור גם בגלל שהוא מיישם ממשקי List ו-Deque.
4) ArrayList הוא טוב יותר לאחסון ולגישה נתונים.LinkedList הוא טוב יותר למניפולציה נתונים.
5) מיקום הזיכרון עבור הרכיבים של ArrayList הוא רציף.המיקום של הרכיבים של רשימה מקושרת אינו מדבק.
6) בדרך כלל, כאשר ArrayList מאותחל, קיבולת ברירת מחדל של 10 מוקצית ל-ArrayList.אין מקרה של קיבולת ברירת מחדל ב-LinkedList. ב-LinkedList נוצרת רשימה ריקה כאשר אתחול LinkedList.
7) ליתר דיוק, ArrayList הוא מערך שניתן לשנות את גודלו.LinkedList מיישמת את הרשימה המקושרת הכפולה של ממשק הרשימה.

דוגמה של ArrayList ו-LinkedList ב-Java

בואו נראה דוגמה פשוטה שבה אנו משתמשים ב-ArrayList וב-LinkedList שניהם.

שם קובץ: TestArrayLinked.java

 import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } } 
בדוק את זה עכשיו

תְפוּקָה:

arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid] 

נקודות לזכור

להלן כמה נקודות חשובות שכדאי לזכור לגבי ArrayList ו-LinkedList.

  • כאשר קצב ההוספה או ההסרה גבוה מתרחישי הקריאה, לכו על ה-LinkedList. מצד שני, כאשר תדירות תרחישי הקריאה היא יותר מקצב ההוספה או ההסרה, אז ArrayList מקבל עדיפות על LinkedList.
  • מכיוון שהרכיבים של ArrayList מאוחסנים יותר קומפקטיים בהשוואה ל-LinkedList; לכן, ArrayList ידידותית יותר למטמון בהשוואה ל-LinkedList. לפיכך, הסיכויים להחמצת המטמון הם פחותים ב-ArrayList בהשוואה ל-LinkedList. בדרך כלל, זה נחשב ש-LinkedList דל במטמון-locality.
  • תקרת הזיכרון ב-LinkedList היא יותר בהשוואה ל-ArrayList. הסיבה לכך היא שב-LinkedList יש לנו שני קישורים נוספים (הבא והקודם) מכיוון שהוא נדרש לאחסן את הכתובת של הצמתים הקודמים והבאים, והקישורים הללו צורכים מקום נוסף. קישורים כאלה אינם קיימים ב-ArrayList.