เมธอด getOrDefault สำหรับ HashMaps ใน Java คืออะไร
ส่วนหัวของเมธอด getOrDefault() คืออะไร
ส่วนหัวปกติสำหรับ เมธอด getOrDefaultถูกกำหนดดังนี้hashMap.getOrDefault(Object key, Object defaultValue)
พารามิเตอร์ผ่าน
ส่วนหัวของเมธอดรับสองอาร์กิวเมนต์ พวกเขาถูกเกณฑ์พร้อมกับประเภทข้อมูลด้านล่าง- อันแรกคือคีย์ ที่ระบุ ของประเภทวัตถุ
- ชนิดของออบเจกต์อื่นคือพารามิเตอร์เป็นค่าดีฟอลต์ที่ส่งผ่านสำหรับคีย์ออบเจกต์เป็นอาร์กิวเมนต์เมธอด
การทำงานของเมธอด getOrDefault()
คุณสามารถทำความเข้าใจการทำงานของ เมธอด getOrDefault()ได้ในสองขั้นตอนง่ายๆ ต่อไปนี้- getOrDefault (key, defaultValue)ได้รับการออกแบบมาเพื่อรับค่าที่สอดคล้องกับคีย์ในHashMap
- หากมีค่าที่เกี่ยวข้องกับคีย์ค่านั้นจะถูกส่งกลับ ในทางกลับกัน หากไม่มีค่า ค่า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