ההבדל בין ספירה ו Iterator

Anonim

ספירה לעומת Iterator

ישנם מבני נתונים רבים הפועלים כאוספים בג'אווה כגון וקטורים, טבלאות Hash ושיעורים המיישמים Java אוספים מסגרת (כלומר HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkList, LinkedHashMap ו Linkedhashet). ישנן דרכים רבות לחזור על דרך אלמנטים בודדים של אובייקטים ב- Java. Java מספקת שני ממשקים כדי להקל על המשימה. ספירה ו Iterator הם שני ממשקים למצוא את ג 'אווה. util זה מספק פונקציונליות למנות באמצעות sequences או אובייקטים עם קבוצה של פריטים. Enumerator הוצג JDK 1. 0 ו Iterator אשר הוצג JDK 1. 2 כפילויות כמעט את הפונקציונליות של Enumerator (במסגרת אוספים).

-> ->

מהו ספירה?

ספירה היא ממשק ציבורי ב- Java, המופיע ב- JDK 1. 0, המספק את היכולת למנות באמצעות רצפים של אלמנטים. זה נמצא תחת ג 'אווה.. כאשר ממשק ספירה מיושם על ידי אובייקט, אובייקט זה יכול ליצור רצף של אלמנטים. ממשק ספירה יש שתי שיטות. בשיטה hasMoreElements () יבדוק אם המספור הזה מכיל אלמנטים נוספים וה- NextElement מחזיר את האלמנט הבא ברצף (אם יש לפחות עוד אחד ללכת). במילים אחרות, על ידי קורא NextElement () ברצף, המתכנת יכול לגשת אלמנטים בודדים בסדרה. לדוגמה, כדי להדפיס את כל האלמנטים ב- Vector v1 באמצעות Enumerator, ניתן להשתמש בקטע הקוד הבא.

ספירה e = v1. אלמנטים ();

בעוד (e hasmoreLements ()) <

מערכת. הַחוּצָה. println (e NextElement ());

}

Enumerator יכול לשמש גם כדי להגדיר את זרם הקלט לאובייקטים SequenceInputStream.

מה זה Iterator?

Iterator הוא ממשק ציבורי ב- Java., המאפשרת איטרציה באמצעות אלמנטים של האוספים אובייקטים ליישם את מסגרת אוספים (כגון ArrayList, LinkedList, וכו '). זה היה הציג JDK 1. 2 והחליף את Enumerator בתוך Java Collections Framework. Iterator יש שלוש שיטות. השיטה hasNext () בודקת אם קיימים אלמנטים שנותרו באוסף, והשיטה הבאה () מחזירה את האלמנט הבא בסדרה. ניתן להשתמש בשיטת remove () כדי להסיר את הרכיב הנוכחי מהאוסף שבבסיס. לדוגמה, כדי להדפיס את כל האלמנטים ב- Vector v1 באמצעות Iterator, ניתן להשתמש בקטע הקוד הבא.

Iterator i = v1. אלמנטים ();

בעוד (i. HasNext ()) <

מערכת. הַחוּצָה. println (ה) הבא ();

}

מה ההבדל בין ספירה ו Iterator?

למרות, Enumeration ו Iterator הם שני ממשקים למצוא את ג 'אווה., המאפשרים איטרציה / ספירה באמצעות אלמנטים בסדרה, יש להם את ההבדלים ביניהם. למעשה, Iterator, אשר הוצג לאחר ספירה, מחליף את ספירה בתוך מסגרת אוספים Java. שלא כמו ספירה, Iterator הוא בטוח להיכשל. משמעות הדבר היא כי שינויים בו זמנית (לאוסף הבסיסית) אינם מותרים כאשר Iterator משמש. זה מאוד שימושי בסביבות מרובי הליכי שבו תמיד קיים סיכון של שינויים בו זמנית. במקרה של שינוי בו זמנית, האובייקט Iterator יזרוק את ConcurrentModificationException. Iterator יש שמות השיטה קצר לעומת Enumerator. יתר על כן, iterator יש פונקציונליות נוספת של מחיקת אלמנטים במהלך איטרציה (אשר אינו אפשרי באמצעות Enumerator). לכן, אם יש צורך להסיר אלמנטים מן האוסף, Iterator היא האפשרות היחידה שניתן לשקול.