ההבדל בין הגדר והרשימה ההבדל בין
ההבדל בין רשימת מערך רשימה מקושר
לפני שאנחנו נכנסים ההבדלים בפועל, תן לנו להכיר מה הם באמת?
מהו סט?
יש לנו להתקל את המושג של הגדר במתמטיקה להגדיר כאן פחות או יותר אומר את אותו הדבר. כן, זהו אוסף של אלמנטים וברוב המקרים, אוסף של אלמנטים דומים. באפשרותך לנסות להוסיף רכיבים אלה לערך ולנסות להדפיס כדי להבין, כיצד הוא מאוחסן בפועל.
-קלט לערך: 20, 50, 10, 30.
זה מאוחסן למעשה במערך 10, 20, 30, 50.
האלמנטים ממוינים כאן ומאוחסנים לא בסדר ההכנסה שלהם. זהו אחד המאפיינים של Set זה תמיד ממין את האלמנטים לפני אחסון וכמובן, יש יוצאים מן הכלל ואחד כזה הוא LinkedhashSet כפי שהוא שומר על סדר הכניסה של האלמנטים.
במונחי מחשב, הערכה כוללת מספר תכונות נוספות כגון שיטות וירושה. שיטות הן בדיוק כמו פונקציות והם עושים משימות מסוימות כגון הוספה, הסרה או iterating דרך קבוצה של אלמנטים. רובנו ידועים של המונח ירושה וזה אומר אותו דבר. כן, אנו יכולים לרשת את השיטה מהאוסף שלה, כך שניתן יהיה להשתמש בה עם ממשק הגדר. שוב אנחנו מדברים על מונח חדש. ה. להגדיר את הממשק, וזה לא יותר מאשר כל קבוצה של אלמנטים כולל שיטות.
-> ->כיצד ליישם אותו?
רק כדי להבין טוב יותר, יש לנו ייצג סט עם התחביר שלה. מן התחביר הבא, אתה יכול לזהות את הסוגים השונים של הגדר כגון HashSet ו TreeSet.
ייבוא ג 'אווה. util *
מחלקה ציבורית Setexample {
חלל סטטי ציבורי [מחרוזת] [{) {
int count [] = 34, 22, 10, 60, 30, 22} {25, 17, 76, 12, 88, 57};
בחר set = חדש HashSet ();
נסה {
עבור (i i = 0; i <5; i ++) {
set. הוסף (count [i]);
}
מערכת. הַחוּצָה. println (set);
TreeSet מיון seteg = TreeSet חדש (סט);
מערכת. הַחוּצָה. println ("כאן יש לנו את הפלט מיון:");
מערכת. הַחוּצָה. println (sortedSeteg);
מערכת. הַחוּצָה. println ("הבט אלמנט ראשון:" + (Integer) sortedSet.
מערכת. הַחוּצָה. println ("הבט אלמנט האחרון:" + (Integer) sortedSet האחרון ());
}
לתפוס (חריגה e) {}
}
}
הפלט של הקוד לעיל הוא כדלקמן.
[25, 17, 76, 12, 88]
כאן יש לנו את הפלט מיון:
[12, 17, 25, 76, 88]
תסתכל על האלמנט הראשון: 12 > הסתכל על האלמנט האחרון: 88
מה זה רשימה?
רשימה מרחיבה אוסף הדומה לאופן הפעולה של סט, אך הוא שומר על סדר ההכנסה. אתה מנסה להוסיף את השמות הבאים לרשימה ולראות איך הוא הוסיף את זה.
קלט לרשימה:
ג'ון, ננסי, מרי, אליס. איך זה מאוחסן ברשימה:
ג'ון, ננסי, מרי, אליס. פשוט שים לב להזמנה שבה הם מוכנסים. אתה יכול לזהות כי "ג 'ון" להיות האלמנט הראשון קלט כמו גם פלט הוא ואחריו אותו סדר שבו שמות מוכנסים. אנחנו יכולים אפילו לשקול את זה אחד המאפיינים העיקריים של הרשימה.
כיצד ליישם אותו?
תן לנו להסתכל על כמה שיטות של רשימה כגון ArrayList ו LinkedList בתחביר להלן.
ייבוא ג 'אווה. util *
המחלקה הציבורית Collectionssample {
חלל סטטי ציבורי ראשי (מחרוזת [] ארגומנטים) {
רשימה a1 = New ArrayList ();
a1. הוסף ("ג'ון");
a1. הוסף ("ננסי");
a1. הוסף ("מרי");
a1. הוסף ("אליס");
מערכת. הַחוּצָה. println ("אלמנטים ArrayList הם");
מערכת. הַחוּצָה. הדפס (" t" + a1);
רשימה l1 = חדש LinkedList ();
l1. ("סילביה");
l1. ("ארג'ון");
l1. הוסף ("Deepika");
l1. ("סוזן");
מערכת. הַחוּצָה. println ();
מערכת. הַחוּצָה. println ("אלמנטים מקושרים");
מערכת. הַחוּצָה. הדפס (" t" + l1); }}
פלט התחביר הנ"ל הוא כדלקמן.
אלמנטים ArrayList הם
[ג'ון, ננסי, מרי, אליס]
אלמנטים מקושרים
[סילביה, Arjun, Deepika, Susan]
זה ברור מאוד מהקוד לעיל כי הן ArrayList והקישור המקושר שומר על סדר ההכנסה.
איך הם שונים?
שיטות ותיאורים:
- סט ואת הרשימה יש שיטות משלה ולתת לנו להסתכל על כמה מהם כאן.
S. לא
סט - שיטות | רשימה - שיטות | 1. |
הוסף () | - כדי להוסיף אובייקטים לאוסף. void add (אינדקס int, אובייקט obj) - | הוא מוסיף את אובייקט 'obj' ב 'אינדקס' שצוין של הרשימה, והוא מוודא כי אלמנט לא מוחלף על ידי הזזת האלמנטים הקודמים. 2. |
clear () - | יש להסיר אובייקטים מאוסף. בוליאני addall (אינדקס int, אוסף c) - | הוא מוסיף את האוסף כולו 'c' לרשימת הפנייה ובאינדקס שצוין. זה גם מבטיח כי אין אלמנטים מוחלפים. אנחנו יכולים גם לבדוק את נכונות פעולתו על ידי בחינת ערך התשואה. היא מחזירה 'true' אם השינוי מוצלח אחרת, היא מחזירה ערך 'false'. 3. |
מכיל () - | הוא בודק אם הסט מכיל אובייקט מסוים בתוכו. הוא מחזיר ערך 'true' אם האובייקט נמצא ב- Set. אובייקט מקבל (אינדקס int) - | הוא מחזיר את האלמנט או האובייקט ב 'אינדקס' שצוין. 4. |
isEmpty () | - זה כדי לקבוע אם האוסף מסייע כמו אין אלמנטים בו. הוא מחזיר ערך 'true' אם אין רכיב. int lastIndexOf (אובייקט obj) - | הוא פועל בדומה להיפך של indexOf () שיטה. היא מחזירה את המופע האחרון של אובייקט 'obj' שצוין וערך '1' מוחזר אם אין אובייקט כזה ברשימה. לכן, זה יכול לשמש גם מכיל () השיטה של ממשק להגדיר. 6. |
הסר () | - זה כדי להסיר רכיב מאוסף על ידי ציון אותו כפרמטר לשיטה. ListIterator listIterator () - | הוא מחזיר ierator למדד ההתחלה של הרשימה. 7. |
size () | - הוא לספור את מספר האובייקטים או האלמנטים שיש לאוסף. ListIterator listIterator (int int) - | זה עוזר ב iterating דרך רשימת הפתיחה החל ב 'אינדקס' שצוין. 8. |
- | אובייקט הסר (אינדקס int) - | הוא מוחק את האובייקט ב 'אינדקס' שצוין ומחזיר את האלמנט שנמחק כתוצאה מכך. זה גם מקטין את רשימת המדדים כתוצאה כדי לשקף את המחיקה. 9. |
- | אובייקט מוגדר (אינדקס int, אובייקט obj) - | זה להקצות אובייקט 'obj' לרשימת הפנייה ב 'אינדקס' שצוין. 10. |
- | רשימה תת רשימה (תחילת int, סוף int) - | הוא יכלול את האובייקטים מהמדד 'התחל' לאינדקס 'end' ברשימה שהפעילה את השיטה. תחזוקת הזמנת הכנסה: |
- הסט לעולם לא שומר על סדר האלמנטים שבהם הם מוכנסים לתוכו, בעוד שהרשימה שומרת על כך. יש חריג לכלל זה עבור LinkedHashSet כפי שהוא שומר על סדר ההכנסה, אבל ערכת אחרים כגון HashSet ו TreeSet למיין את האלמנטים לפני אחסון זה. אותו הדבר מתואר עם דוגמאות להלן.
הגדר
קלט: Cat, Doll, Apple. מאוחסן כמו: אפל, חתול, דול.
רשימת קלט: חתול, בובה, אפל.
מאוחסן כמו: חתול, דול, אפל.
נוכחות של כפילויות:
- קבוצה לעולם לא מאפשר כפילויות ואילו רשימה מאפשרת את זה. אם יש להוסיף ערך כפול לרשימה, אז הוא מקבל מוחלף. עיין בדוגמאות להגדרת כפילויות וכפילויות.
הזן קלט: 10, 20, 20, 50.
מאוחסן כ: 10, 20, 50.
רשימת קלט: 10, 20, 20, 50.
מאוחסנים כ-: 10, 20, 20, 50.
ערכי Null:
- הערכה יכולה להכיל רק ערך ריק אחד, בעוד שרשימה יכולה להכיל יותר מערך ריק אחד, והיא אינה מוגבלת למספר כלשהו.
קבע קלט: null, null, אדם, כלב, מטוס.
מאוחסן כמו: null, כלב, בן אדם, מטוס.
רשימת קלט: null, null, גבר, כלב, מטוס.
מאוחסן כמו: null, null, בן אדם, כלב, מטוס.
שימוש ב- Iterator & ListIterator:
- שיטת Iterator פועלת היטב גם עם Set וגם List בעוד שהרשימה listIterator פועלת רק עם List. ListIterator ניתן להשתמש כדי לחצות קדימה, כמו גם לאחור דרך הרשימה.
הנוכחות של מחלקה מדור קודם:
- ל- Set אין מדור קודם, ואילו בממשק List יש מורשת הנקראת 'וקטור'. וקטור משתמש בממשק רשימה ולכן הוא שומר על סדר הכניסה. בשל מאמצי הסינכרון, הביצועים של וקטור בתוספות, מחיקות ועדכונים הוא איטי יותר.
מימושים:
- מעטים מיישומי הגדר הם HashSet, LinkedhashSet ו- TreeSet. מעטים מיישומי הרשימה כוללים את ArrayList ו- LinkedList.
מתי להשתמש ב- Set & List?
השימוש של Set and List תלוי אך ורק בדרישה לתחזוקת הזמנת ההכנסה.כפי שלמדנו כי סט לא שומר על סדר הכניסה, זה יכול לשמש כאשר הסדר הוא בעל חשיבות פחותה. באופן דומה, השתמש ברשימה כאשר אתה צריך לשמור על רצף ההכנסה גם כן.
הבדלים בצורה טבלאית:
S. לא
הבדלים | בחר | רשימה | 1. |
הזמנת הכנסה | היא שומרת על סדר ההכנסה. שרידי הראשון נשאר מלכתחילה וכן הלאה ללא קשר לערכו. | היא לעולם לא שומרת על סדר ההכנסה. | 2. |
שיטות | הוא משתמש בשיטות כגון הוספה (), ברור (), מכיל (), isEmpty (), הסר () וגודל (). | היא משתמשת בשיטות כגון add (), addall (), get (), lastIndexOf (), ListIterator () עם או ללא פרמטר, הסר (), set (), ו subList (). | 3. |
כפילויות | הוא לעולם אינו מאפשר כפילויות ובמקרה של הופעות כאלה, הערך מוחלף. | זה מאפשר כפילויות. | 4. |
ערכי null | יכול להיות רק ערך ריק אחד לכל היותר. | זה יכול להיות כל מספר של ערכי null. | 5. |
שימוש ב- Iterator () & listIterator () | הוא משתמש רק בשיטה iterator (). | הוא משתמש הן את iterator () וכן את listIterator (). | 6. |
נוכחות של מחלקה מדור קודם | אין מחלקה מדור קודם. | יש לו מעמד מדור קודם שנקרא וקטור. | 7. |
מימושים | מעטים מיישומי הממשק של Set הם HashSet, LinkedHashSet ו- Tree Set. | מעטים מיישומי הממשק 'רשימה' הם LinkedList ו- ArrayList. | התקווה, כללנו כל הבדל אפשרי בין הסט והרשימה. אם אתה מרגיש שהחמצנו משהו, אנא יידע אותנו. |