ההבדל בין רשימה להגדיר ב- Java

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 2 אַפּרִיל 2021
תאריך עדכון: 10 מאי 2024
Anonim
Difference between List and Set in Java | Java Interview
וִידֵאוֹ: Difference between List and Set in Java | Java Interview

תוֹכֶן


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

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

טבלת השוואה

בסיס להשוואהרשימה הגדר
בסיסירשימה שומרת על רצף האלמנטים המאוחסנים ברשימה.הסט אינו שומר במיוחד על סדר ההכנסה אך, Linked HashSet שומר על סדר ההכנסה.
כפילותברשימה עשויים להיות רכיבים כפולים.שיטת הוספה () חוזרת כוזבת אם תנסה להכניס את האלמנטים הכפולים.
שיטותבנוסף לשיטות שהוגדרו באוסף, רשימה מגדירה כמה משיטות משלה.סט אינו מגדיר שום שיטה נוספת.
יישום הרשימה מיושמת על ידי ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack.הסט מיושם על ידי HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet.


הגדרת רשימה

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

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

הגדרת הסט

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


ממשק הגדרה אינו מגדיר שום שיטה בנוסף לשיטה המוגדרת באוסף. במקום זאת, זה מגביל את שיטות האיסוף add () ו- addall () כדי להוסיף כל אובייקט כפול באוסף. אם אתה מנסה להוסיף אובייקט כפול כלשהו באוסף באמצעות add () בשיטת אוסף הוא מחזיר כוזב. אחרת, זה חוזר נכון. ממשק הגדרת מיושם על ידי HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet.

  1. רצף האלמנטים / האובייקט באוסף נשמר ברשימה ואילו, סט אינו שומר על סדר האלמנטים, אך קיים חריג ש- LinkedHashSet שומר על סדר ההכנסה.
  2. ברשימה יכולים להיות אלמנטים כפולים מכיוון שהיא מזהה כל אלמנט באינדקס שלו, אולם, Set אינו מאפשר לאף אלמנטים כפולים שכן אין לו אלמנט מסוג כלשהו לזהות אובייקט כלשהו באוסף.
  3. רשימה מגדירה כמה שיטות בעצמה, בנוסף לשיטות שהוגדרו באוסף. מצד שני, סט אינה מגדירה שום שיטה משל עצמה, אך היא מגבילה את שיטות האוסף כדי להוסיף אלמנטים כפולים כלשהם.
  4. הרשימה מיושמת על ידי ממשקי ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack. מצד שני, Set מיושם על ידי ממשקי HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet.

סיכום:

השימוש בממשק List and Set תלוי בדרישה. אם סדר האובייקטים / האלמנטים הוא חשוב, עליך להשתמש בממשק הרשימה. אם אינך דורש רכיבים כפולים באוסף שלך, עליך להשתמש בממשק Set