CodeGym /בלוג Java /Random-HE /כיצד לחזור על מפה ב-Java
John Squirrels
רָמָה
San Francisco

כיצד לחזור על מפה ב-Java

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

מהי מפה ב-Java?

יש הרבה פרשנויות לזה, אבל בואו נגיד את זה בפשטות.
"מפה היא ממשק ב-Java, המשמש לאחסון נתונים בצורה של צמדי מפתח-ערך."
אם אתה חושב למה משמשות מפות? או מתי יש צורך בהם? אז יש הרבה מצבים בחיים האמיתיים שבהם אנחנו צריכים לאחסן נתונים בצמדי מפתח-ערך. לדוגמה, ניתן לאחסן את כל המילים המתאימות לאות בודדת במילון בצורה של מפה ב-Java.
ק עפיפון, מלך, קוריאה, אביר,... וכו'.
ל לבה, חיים, אור, אהבה, לבנון,... וכו'.
יתר על כן, אתה יכול להסתכל על הדוגמאות הבאות כדי להבין זאת טוב יותר.
מַפְתֵחַ ערך
תעודת זהות משפחתית חברי משפחה
שם הכיתה תעודות סטודנט
שם אזור מיקוד
בלוק שטח מספרי בית

למה אנחנו צריכים לעבור דרך מפה?

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

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

אם כי ישנן דרכים רבות לחצות מפה. עם זאת, נתמקד בדרכים היעילות והפשוטות ביותר.
  1. שיטת ForEach Loop
  2. שיטת האיטרטורים
אנא מצא את היישום של שתי השיטות למטה.

שימוש בשיטת Foreach Loop

דוגמא

import java.util.Map;
import java.util.HashMap;

public class ForEachDemo {

	public static void main(String[] args) {

		Map<String, String> businessDays = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		businessDays.put("1", "Monday");
		businessDays.put("2", "Tuesday");
		businessDays.put("3", "Wednesday");
		businessDays.put("4", "Thursday");
		businessDays.put("5", "Friday");

		// Iterating over the Map.entrySet() using map.forEach
		for (Map.Entry<String, String> entry : businessDays.entrySet())
		{
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
		}
	}
}

תְפוּקָה

מפתח = 1, ערך = מפתח יום שני = 2, ערך = מפתח יום שלישי = 3, ערך = מפתח יום רביעי = 4, ערך = מפתח יום חמישי = 5, ערך = יום שישי

הֶסבֵּר

בדוגמה זו השתמשנו בלולאה הקדמית כדי לחזור על המפה. על ידי שימוש בלולאה for-each, אנו מקבלים entrySet() המספק "תצוגה" אוטומטית של הנתונים במפה, בצורה של צמדי מפתח-ערך. כל ערכת ערכית מכילה מפתח וערכים מתאימים. איפה אתה יכול להשתמש בכל השיטות של Map.Entry<key, value> לפי הדרישות שלך. כאן, השתמשנו רק ב-getKey() וב- getValue() כדי להציג את הנתונים במסוף. כתרגיל, אתה יכול לחקור את שאר השיטות כדי לחזק את הפקודה שלך על מושג זה.

שימוש בשיטת Iterators

דוגמא

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIterator {

	public static void main(String[] args) {

		Map<String, String> monthsInAYear = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		monthsInAYear.put("1", "January");
		monthsInAYear.put("2", "February");
		monthsInAYear.put("3", "March");
		monthsInAYear.put("4", "April");
		monthsInAYear.put("5", "May");
		monthsInAYear.put("6", "June");
		monthsInAYear.put("7", "July");
		monthsInAYear.put("8", "August");
		monthsInAYear.put("9", "September");
		monthsInAYear.put("10", "October");
		monthsInAYear.put("11", "November");
		monthsInAYear.put("12", "December");

		// iterate map / traverse the map using using iterator
		Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();

		while (iterator.hasNext())
		{
			// check if next entry exists in the map
			Map.Entry<String, String> entry = iterator.next();
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

		}
	}
}

תְפוּקָה

מפתח = 11, ערך = מפתח נובמבר = 1, ערך = מפתח ינואר = 12, ערך = מפתח דצמבר = 2, ערך = מפתח פברואר = 3, ערך = מפתח מרץ = 4, ערך = מפתח אפריל = 5, ערך = מפתח מאי = 6, ערך = מפתח יוני = 7, ערך = מפתח יולי = 8, ערך = מפתח אוגוסט = 9, ערך = מפתח ספטמבר = 10, ערך = אוקטובר

הֶסבֵּר

בדוגמה זו, אנו יוצרים איטרטור מפורש כדי לעבור / לחזור על המפה. ראשית, עליך לייבא את מחלקת האיטרטור, ולאחר מכן לקבל את האיטרטור עבור ה-entrySet. כעת חצו את המפה תוך שמירה על בדיקת הישות הבאה שקיימת במפה. הנה לך! המעבר שלך הושלם, בדיוק ככה.

האם לולאת Foreach טובה יותר משיטת האיטרטורים?

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

מה ההבדל בין שתי השיטות?

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

באיזו שיטת מעבר להשתמש ומתי?

אם אינך בטוח אם להשתמש ב-for-each או באיטרטורים כדי לחזור על המפה שלך, תוכל לקחת את ההצעות הבאות.
  • השתמש באיטרטור אם עליך לשנות את המפה.
  • השתמש בלולאה לכל אחד אם יש לך לולאות מקוננות (כדי למנוע מורכבות).

סיכום

עד סוף הפוסט, אנו מקווים שלמדת כיצד לבצע איטרציה של מפה בג'אווה. מומלץ לתרגל את אלה ולנסות גם שיטות אחרות של מעבר. אל תהסס לקפוץ אחורה או לפרסם שאלות בכל פעם שאתה מרגיש תקוע. עד אז, למידה מהנה!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION