מהי שיטת getOrDefault עבור HashMaps ב-Java?

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

מהי הכותרת של שיטת getOrDefault()?

הכותרת הרגילה עבור שיטת getOrDefault מוגדרת כדלקמן.

hashMap.getOrDefault(Object key, Object defaultValue)

הפרמטרים עברו

כותרת השיטה לוקחת שני ארגומנטים. הם מתגייסים יחד עם סוגי הנתונים שלהם למטה.
  1. הראשון הוא המפתח שצוין מסוג Object.
  2. סוג האובייקט האחר הוא פרמטר הוא defaultValue המועבר עבור מפתח האובייקט כארגומנט המתודה.

עבודה של שיטת getOrDefault()‎

אתה יכול להבין את פעולתה של שיטת getOrDefault() בשני השלבים הפשוטים הבאים.
  1. ה- getOrDefault(key, defaultValue) נועד לקבל את הערך המתאים למפתח ב- HashMap .
  2. אם יש ערך המשויך למפתח , אז הערך הזה מוחזר. מצד שני, אם הערך אינו זמין, מוחזר ה- defaultValue שהועבר כפרמטר לשיטה זו.

דוגמה 1


import java.util.HashMap;

public class Driver1{

	public static void main(String[] args) {

		// Declare a HashMap
		HashMap weekDays = new HashMap<>();

		// Add data to the HashMap
        weekDays.put("Monday", "Working Day");
        weekDays.put("Tuesday", "Working Day");
        weekDays.put("Wednesday", "Working Day");
        weekDays.put("Thursday", "Working Day");
        weekDays.put("Friday", "Working Day");
        weekDays.put("Saturday", "Off Day");
        weekDays.put("Sunday", "Off Day");

        // Print the data in the HashMap
        System.out.println("Working Schedule : " + weekDays + "\n");


        // Check if the given key is present in the Map
        // IF yes, its value will be returned
        String sunday = weekDays.getOrDefault("Sunday", "No Announcements Yet.");
        System.out.println("Is Sunday a working day?  " + sunday);

        // IF not, the default value passed will be returned
        String christmas = weekDays.getOrDefault("Christmas", "National Holiday");
        System.out.println("Is Christmas a working day?  " + christmas);

        // Key not present in the HashMap
        // Default Value returned
        String easter = weekDays.getOrDefault("Easter", "National Holiday");
        System.out.println("Is Easter a working day?  " + easter);
	}

}

תְפוּקָה

לוח זמנים עבודה: {שני=יום עבודה, חמישי=יום עבודה, שישי=יום עבודה, ראשון=יום חופש, רביעי=יום עבודה, שלישי=יום עבודה, שבת=יום חופש} האם יום ראשון הוא יום עבודה? יום חופש האם חג המולד הוא יום עבודה? חג לאומי האם חג הפסחא הוא יום עבודה? חג לאומי

מדוע להשתמש בשיטת getOrDefault() ולא get()?

השיטה הפשוטה get() ב-Java משמשת כדי לקבל את הערך של המפתח המבוקש ב- HashMap . אם המפתח נמצא, הערך מוחזר. במקרה שהמפתח לא נמצא, "null" מוחזר. שיטת getOrDefault() מועדפת על פני שיטת get הפשוטה כאשר ערך ברירת מחדל צפוי לחזור. הנה דוגמה פשוטה להבנתך.

דוגמה 2


import java.util.HashMap;
public class Driver2{

	public static void main(String[] args) {

	  HashMap<Object, Boolean> holidays = new HashMap<>();

	  // Add data to the HashMap
        holidays.put("Saturday",  true);
        holidays.put("Sunday", true);
        
        // Print the data in the HashMap
        System.out.println("Holidays: " + holidays + "\n");

        // Key not present, default value returned
        Object christmas = holidays.getOrDefault("Christmas", true);
        System.out.println("Is Christmas a holiday?  " + christmas);
        
        // Key not present, null returned
        christmas = holidays.get("Christmas");
        System.out.println("Is Christmas a holiday?  " + christmas);
	}
}

תְפוּקָה

חגים: {Sunday=true, Saturday=true} האם חג המולד הוא חג? נכון האם חג המולד הוא חג? ריק
אתה יכול לראות את ההבדל בין getOrDefault לשיטת get . כפי שהודפס בפלט, השיטה הראשונה מחזירה את ערך ברירת המחדל אם המפתח לא נמצא בעוד שהאחרונה מחזירה null.

סיכום

עד סוף פוסט זה, עליך להכיר את שיטת getOrDefault() של HashMap . מומלץ ללמוד על ידי תרגול. אתם מוזמנים לבדוק שוב את הפוסט הזה אם נתקעתם בדרך. עד אז, המשיכו להתאמן ולהמשיך לגדול!