ההבדל בין רשימה ל- ArrayList בג'אווה

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 2 אַפּרִיל 2021
תאריך עדכון: 10 מאי 2024
Anonim
ההבדל בין רשימה ל- ArrayList בג'אווה - טכנולוגיה
ההבדל בין רשימה ל- ArrayList בג'אווה - טכנולוגיה

תוֹכֶן


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

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

בסיס להשוואהרשימהרשימת מערך
בסיסירשימה היא ממשקArrayList הוא כיתת אוסף רגילה.
תחביררשימת ממשקיםArrayList בכיתה
הרחב / יישםממשק הרשימה מרחיב את מסגרת האיסוף.ArrayList מרחיב את AbstractList ומיישם את ממשק הרשימה.
מרחב שמותSystem.Collections.Generic.System.Collections.
עבודההוא משמש ליצירת רשימת אלמנטים (אובייקטים) המשויכים למספרי האינדקס שלהם.ArrayList משמש ליצירת מערך דינמי המכיל אובייקטים.


הגדרת רשימה

רשימה היא ממשק אשר מרחיב את אוסף מסגרת. ממשק הרשימה מתאר את אוסף האלמנטים המסודרים ברצף. ממשק הרשימה מיושם על ידי שיעורי האיסוף הסטנדרטיים הבאים כמו ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack. בממשק הרשימה ישנם אלמנטים המשויכים למספרי האינדקס שלהם. אתה יכול לגשת לאלמנט ברשימה לפי מיקומו (אינדקס) ברשימה. רשימה שנוצרה באמצעות ממשק רשימה מתחילה עם אינדקס מבוסס אפס.

בנוסף לשיטות שעברו בירושה באמצעות מסגרת האיסוף, ממשק הרשימה מגדיר גם שיטה משלו. השיטות שנוספו על ידי ממשק הרשימה הן, הוסף (int, E) ו addAll (int, אוסף). שיטות אלה מוסיפות אלמנט לרשימה לפי האינדקס שלהם. שיטות ברשימה עשויות לזרוק חריג כמו UnexuppedOperationException אם השיטה אינה יכולה לשנות את הרשימה. כאשר אובייקט אחד ברשימה אינו תואם לאובייקט אחר ברשימה, אז ClassCastException נזרק. אלמנטים ברורים אינם מורשים ברשימה אם אתה מנסה להכניס אובייקט null לרשימה, NullPointerException נזרק.


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

הגדרת ArrayList

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

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

  1. אחד ההבדלים החשובים ביותר בין רשימה ל- ArrayList הוא שהרשימה היא ממשק ו- ArrayList הוא אוסף סטנדרטי מעמד.
  2. ממשק רשימה מרחיב את אוסף בעוד ש- ArrayList מתרחב AbstractList כיתה וזה מיישם רשימה ממשקים.
  3. מרחב השמות לממשק רשימה הוא מערכת. איסוף ואילו מרחב השמות של ArrayList הוא מערכת.
  4. ממשק רשימה יוצר אוסף של אלמנטים המאוחסנים ברצף ומזהים או ניגשים באמצעות מספר האינדקס שלהם. מצד שני, ArrayList יוצר מערך של אובייקטים שבהם המערך יכול לצמוח באופן דינמי בעת הצורך.

סיכום:

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