ההבדל בין Iterator לממשק ספירה ב- Java

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 2 אַפּרִיל 2021
תאריך עדכון: 6 מאי 2024
Anonim
Section 6
וִידֵאוֹ: Section 6

תוֹכֶן


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

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

טבלת השוואה

בסיס להשוואהאיטרטור ספירה
בסיסיIterator הוא סמן אוניברסאלי כפי שהוא ישים לכל שיעורי האיסוף.ספירה אינה סמן אוניברסאלי שכן היא חלה רק על שיעורי מדור קודם.
גישהבעזרת Iterator תוכלו לקרוא ולהסיר את האלמנטים באוסף.בעזרת ספירה תוכלו לקרוא רק את האלמנטים באוסף.
שיטותhasnext ציבורי בוליאני ציבורי ();
חפצים ציבוריים הבאים ();
חלל ציבורי הסר ();
הציבור הבוליאני hasMoreElements ();
אובייקט ציבורי nextElement ();
הגבלהIterator הוא סמן גישה קדימה חד כיוונית.
Iterator לא יכול להחליף אף אלמנט באוסף.
Iterator לא יכול להוסיף שום אלמנט חדש באוסף.
הספירה היא סמן גישה קדימה חד כיוונית.
ספירה תומכת רק בשיעורי מורשת.
לספירה יש גישה לקריאה בלבד אל האלמנטים באוסף.
להתגברכדי להתגבר על המגבלות של Iterator עליכם לבחור ב- ListIterator.כדי להתגבר על המגבלות של ספירה עליכם לבחור ב- Iterator.


הגדרת ממשק Iterator

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

Iterator itr = Collc.iterator ();

המשתנה itr הוא מושא לאיטרטור. קולק הוא כל אובייקט איסוף שעליו לעבור מחזור או לאיטציה באמצעות האובייקט (itr) של ה- Iterator. ה iterator () היא השיטה המשמשת ליצירת אובייקט איטרטור. יש שלוש שיטות ב- Iterator כמוצג להלן.

hasnext ציבורי בוליאני ציבורי (); אובייקט ציבורי הבא (); חלל ציבורי הסר ();

השיטה הראשונה hasnext () בודק אם לאוסף ישנם אלמנטים כלשהם או לא. אם לאוסף יש את האלמנטים, הוא יחזור נכון אחרת יחזור כוזב. השיטה השנייה הבא () משמש לאחזור האלמנט הבא באוסף. השיטה השלישית הסר () משמש למחיקת האלמנטים מהאוסף.


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

הגדרת ממשק ספירה

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

ספירה er = Vect.elements ();

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

הציבור הבוליאני hasMoreElements (); הציבור הבא ();

השיטה הראשונה hasMoreElements () משמש לבדיקת סטטוס האוסף האם יש בו האלמנטים או שהוא ריק. אם לאוסף יש את האלמנטים, השיטה hasMoreElements () מחזירה נכונה אחרת תחזיר שווא. השיטה השנייה nextElement () משמש לאחזור האלמנטים מהאוסף בזה אחר זה. לאחר סיום המעבר השיטת NextElement () זורקת NoSuchElementException. אובייקט הספירה נוסע רק בכיוון קדימה. זה לא יכול להוסיף או להסיר או להחליף אף אלמנט באוסף. כדי להתגבר על המגבלות הללו של המספור, עליכם לבחור ב- Iterator.

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

סיכום:

בימינו משתמשים בסמן Iterator ו- ListItertaor מכיוון שהם הסמן האוניברסלי ויעילים בהרבה מספירה.