האם ב- Java יש הבדל בין Iterator ל- Iterable?


תשובה 1:

שמות הממשקים מתאימים לחלוטין, הם צריכים לתת לכם רמז, אם לא התשובה הישירה כבר. כיתה שמיישמת את הממשק ה- Iterable היא - ITERABLE.

אז אפשר לחזור על הכיתה הזו.

לדוגמא זה משמש עבור כל לולאה:

עבור (פריט פריט: פריטים) {System.out.println (פריט); }

קוד זה יעבוד רק בתנאי ש"פריטים "הם מעמד שמיישם את הממשק הניתן להחלפה.

לממשק ה- Iterable יש רק שיטה אחת:

איטרטור iterator ();

זה יחזיר איטרטור, והאיטרטור ישמש באופן פנימי על ידי ה- JVM כדי לחזור על האובייקט שלך.

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

אז אפשר לומר - Iterable הוא עץ אגסים. איטרטור הוא אגס. עץ אגסים "מחזיר אגסים". עץ אגסים אינו אגס.

(לא איור מושלם אני חייב להודות, אבל טוב, אני מקווה שתקבלו את הרעיון ;-)

קוד מקור מקוון Iterable (OpenJdk):

Iterable - java.lang.Iterable (.java) - מקור ממשק GrepCode

קוד המקור של Iterator (OpenJdk):

Iterator - java.util.Iterator (.java) - מקור ממשק GrepCode


תשובה 2:

תודה על ה- A2A

אם משהו מיישם את ה- "Iterable", אתה יכול לקרוא לשיטת ה- .iterator () וסיפק אובייקט Iterator. זה קורה 'מתחת לכיסויים' בלולאת for.

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

יש לקוות שאובייקט Iterable מחזיר לך איטרטור חדש ורענן בכל פעם. אז אתה יכול להכיל מספר פיסות של קוד לקוח שכולן עוברות במהירות שלהם.


תשובה 3:

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

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


תשובה 4:

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

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