Unmodifiable Map ด้วย Factory Methods
Java 9 เพิ่ม Map.of() และ Map.ofEntries() สำหรับสร้าง immutable map ได้สะดวก
ลักษณะของ Map ที่สร้างโดย Factory Methods
- Immutable: ไม่ add/remove/update ได้ (UnsupportedOperationException)
- Null Safety: ไม่อนุญาต null keys/values (NullPointerException)
- No Duplicates: Duplicate keys -> IllegalArgumentException
- Serializable: ถ้า keys/values ทั้งหมด serializable
- Iteration Order: ไม่ได้รับประกัน (unspecified)
Syntax
Map.of(k1, v1, k2, v2, ...) Map.ofEntries(entry(k1, v1), entry(k2, v2), ...)
ตัวอย่าง Map.of()
import java.util.Map;
public class UnmodifiableMapTest {
public static void main(String[] args) {
Map<String, String> empMap = Map.of("101", "Raja", "102", "Adithya", "103", "Jai", "104", "Chaitanya");
System.out.println("empMap - " + empMap);
empMap.put("105", "Vamsi"); // throws UnsupportedOperationException
}
}
Output
empMap - {104=Chaitanya, 103=Jai, 102=Adithya, 101=Raja}
Exception in thread "main" java.lang.UnsupportedOperationException
ตัวอย่าง Map.ofEntries()
import java.util.Map;
import static java.util.Map.entry;
public class UnmodifidMapTest {
public static void main(String[] args) {
Map<String, String> empMap = Map.ofEntries(
entry("101", "Raja"),
entry("102", "Adithya"),
entry("103", "Jai"),
entry("104", "Chaitanya")
);
System.out.println("empMap - " + empMap);
}
}
Output
empMap - {102=Adithya, 101=Raja, 104=Chaitanya, 103=Jai}
สรุป
ใช้ Map.of() สำหรับ map เล็ก (≤10 entries) และ Map.ofEntries() สำหรับ map ใหญ่กว่านั้น หรือเมื่อต้องการสร้าง entry objects ก่อน