דרכים להתנייד מעל רשימה בג'אווה

1. הקדמה

התבוססות על מרכיבי הרשימה היא אחת המשימות הנפוצות בתוכנית.

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

2. ל לוּלָאָה

ראשית, בואו נסקור כמה ל אפשרויות לולאה.

נתחיל בהגדרת רשימת מדינות לדוגמאות שלנו:

רשימת מדינות = Arrays.asList ("גרמניה", "פנמה", "אוסטרליה");

2.1. בסיסי ל לוּלָאָה

ההצהרה הנפוצה ביותר לבקרת זרימה לאיטרציה היא הבסיסית ל לוּלָאָה.

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

כאן אנו פשוט משתמשים במשתנה שלם כאינדקס:

עבור (int i = 0; i <country.size (); i ++) {System.out.println (country.get (i)); }

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

תנאי הסיום הוא ביטוי שאחרי ההערכה מחזיר בוליאני, ברגע שהביטוי הזה מוערך אליו שֶׁקֶר הלולאה מסתיימת.

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

2.2. משופר ל לוּלָאָה

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

שימו לב שהמשופרת ל לולאה פשוטה מהבסיס ל לוּלָאָה:

עבור (מדינה מחרוזת: מדינות) {System.out.println (מדינה); }

3. מוחלפים

An איטרטור הוא דפוס עיצוב המציע לנו ממשק סטנדרטי לחצות מבנה נתונים מבלי לדאוג לייצוג הפנימי.

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

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

3.1. איטרטור

בג'אווה, ה- איטרטור דפוס משתקף ב java.util. אינטראטור מעמד. הוא נמצא בשימוש נרחב בג'אווה אוספים. ישנן שתי שיטות מפתח ב- איטרטור, ה hasNext () ו הַבָּא() שיטות.

כאן אנו מדגימים את השימוש בשניהם:

מדינות איטרטור אינטרטור = מדינות.יטרטור (); ואילו (countryIterator.hasNext ()) {System.out.println (countryIterator.next ()); }

ה hasNext () שיטה בודק אם נותרו אלמנטים ברשימה.

ה הַבָּא() שיטה מחזיר את האלמנט הבא באיטרציה.

3.2. ListIterator

א ListIterator מאפשר לנו לעבור על רשימת אלמנטים בסדר קדימה או אחורה.

גלילה עם רשימה עם ListIterator קדימה עוקב אחר מנגנון דומה לזה ששימש את איטרטור. בדרך זו, אנו יכולים להעביר את האיטרטור קדימה עם ה- הַבָּא() ואנחנו יכולים למצוא את סוף הרשימה באמצעות hasNext () שיטה.

כפי שאנו רואים, ListIterator נראה מאוד דומה ל איטרטור שהשתמשנו בעבר:

ListIterator listIterator = country.listIterator (); בעוד (listIterator.hasNext ()) {System.out.println (listIterator.next ()); }

4. לכל אחד()

4.1. Iterable.forEach ()

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

התחביר הוא די פשוט:

country.forEach (System.out :: println);

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

עם כניסתה של לכל אחד כפונקציה ב ניתן לנידון ממשק, כל הכיתות שמיישמות ניתן לנידון יש את לכל אחד פונקציה הוסיפה.

4.2. Stream.forEach ()

אנו יכולים גם להמיר אוסף ערכים לזרם ונוכל לקבל גישה לפעולות כגון לכל אחד(), מַפָּה(), אוֹ לְסַנֵן().

כאן אנו מדגימים שימוש אופייני לזרמים:

country.stream (). forEach ((c) -> System.out.println (c));

5. מסקנה

במאמר זה, הראינו את הדרכים השונות לחזור על אלמנטים של רשימה באמצעות Java API. בין אלה הזכרנו את ל לולאה, המשופרת ל לולאה, איטרטור, ה ListIterator וה לכל אחד() שיטה (כלול ב- Java 8).

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

לבסוף, כל הקוד המשמש במאמר זה זמין ברפיו של Github.


$config[zx-auto] not found$config[zx-overlay] not found