בוטל על מפה בג'אווה

1. סקירה כללית

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

במילים פשוטות, אנו יכולים לחלץ את תוכן המפה באמצעות keySet (), valueSet () אוֹ entrySet (). מכיוון שכולם סטים, עקרונות איטרציה דומים חלים על כולם.

ה Map.entrySet API מחזיר תצוגת אוסף של המפה, שרכיביה הם מה- מַפָּה מעמד. הדרך היחידה להשיג התייחסות לערך מפה יחיד היא מאיטרטור תצוגת האוסף הזה.

ה entry.getKey () מחזיר את המפתח ו entry.getValue () מחזירה את הערך המתאים.

בואו נסתכל על כמה כאלה.

2. EntrySet ו לולאה

ראשית, בואו נראה איך לחזור באמצעות א מַפָּה משתמש ב כְּנִיסָהמַעֲרֶכֶת:

public void iterateUsingEntrySet (Map Map) {for (Map.Entry entry: map.entrySet ()) {System.out.println (entry.getKey () + ":" + entry.getValue ()); }}

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

אנו יכולים לגשת למפתח של כל ערך על ידי התקשרות להשיג מפתח() ונוכל לגשת לערך של כל ערך על ידי שיחה getValue ().

3. איטרטור ו EntrySet

גישה אחרת תהיה להשיג סט ערכים ולבצע את האיטרציה באמצעות איטרטור:

public void iterateUsingIteratorAndEntry (מפת מפה) {Iterator iterator = map.entrySet (). iterator (); בעוד (iterator.hasNext ()) {Map.Entry entry = iterator.next (); System.out.println (entry.getKey () + ":" + entry.getValue ()); }}

שימו לב איך אנחנו יכולים להשיג את איטרטור למשל באמצעות איטרטור () ממשק API של entrySet (). ואז, כרגיל, אנו עוברים דרך איטרטר עם iterator.next ().

4. עם למבדות

בואו נראה עכשיו כיצד לחזור על א מַפָּה באמצעות למבדה ביטויים.

כמו רוב הדברים האחרים בג'אווה 8, זה מתגלה כפשוטה בהרבה מהחלופות; נשתמש ב- לכל אחד() שיטה:

בטל פומבי iterateUsingLambda (מפת מפה) {map.forEach ((k, v) -> System.out.println ((k + ":" + v))); } 

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

5. זרם ממשק API

זרם API הוא אחד המאפיינים העיקריים של ג'אווה 8. אנו יכולים להשתמש בתכונה זו כדי לעבור דרך a מַפָּה כמו כן, אך כמו בדוגמאות הקודמות, עלינו להשיג קודם ערכת ערכים:

public void iterateUsingStreamAPI (מפת מפה) {map.entrySet (). stream () // ... .forEach (e -> System.out.println (e.getKey () + ":" + e.getValue ()) ); } 

זה אמור לשמש כשאנחנו מתכננים לעשות עוד כמה זרם מעבד. אחרת, זה פשוט פשוט לכל אחד() כמתואר לעיל.

ללמוד עוד על זרם API, עיין במאמר זה.

6. מסקנה

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

ראינו כמה שיטות בהן ניתן להשתמש ב- Java 8 בלבד, כלומר ביטויים למבדה ו- זרם ממשק API.

כמו תמיד, ניתן למצוא את דוגמאות הקוד במאמר ב- GitHub.