แผนที่ที่ไม่สามารถแก้ไขได้ เป็นคนที่มี กุญแจ และ คุณค่า ไม่สามารถ เพิ่ม , ลบแล้ว หรือ อัปเดต เมื่อมีการสร้างตัวอย่างแผนที่ที่ไม่สามารถแก้ไขได้ วิธีการโรงงานแบบคงที่:Map.of() และ Map.ofEntries() จากแผนที่ที่ให้วิธีที่สะดวกในการสร้างแผนที่ที่ไม่สามารถแก้ไขได้ใน Java 9 .
ตัวอย่างแผนที่ที่สร้างโดยใช้ Map.of() และ Map.ofEntries() วิธีการมีลักษณะดังต่อไปนี้
- แผนที่ที่ส่งคืนโดยวิธีการจากโรงงานนั้นตามอัตภาพไม่เปลี่ยนรูปแบบ . แปลว่า แป้น และ คุณค่า ไม่สามารถ เพิ่ม , ลบแล้ว หรือ อัปเดต . การเรียกใช้เมธอด mutator ใดๆ บนแผนที่ทำให้เกิด UnsupportedOperationException .
- หากมี คีย์/ค่า ของแผนที่เองไม่แน่นอน อาจทำให้ Map ทำงานไม่สอดคล้องกัน ย หรือเนื้อหาที่ดูเหมือนจะเปลี่ยนไป
- แผนที่ที่ไม่เปลี่ยนรูปไม่อนุญาตให้ null กุญแจ และ คุณค่า . หากพยายามสร้างด้วยคีย์หรือค่า null ก็จะส่ง NullPointerException .
- ที่ ซ้ำกัน กุญแจ ถูกปฏิเสธในเวลาที่สร้างเอง การส่งคีย์ที่ซ้ำกันไปยังเมธอดโรงงานแบบสแตติกทำให้ IllegalArgumentException .
- ที่ ไม่เปลี่ยนรูป แผนที่ สามารถจัดลำดับได้ หากคีย์และค่าทั้งหมดเป็นแบบซีเรียลไลซ์ได้
- ลำดับการวนซ้ำของการจับคู่ ไม่ได้ระบุ และอาจมีการเปลี่ยนแปลง
ไวยากรณ์
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 } }
ผลลัพธ์
empMap - {104=Chaitanya, 103=Jai, 102=Adithya, 101=Raja} Exception in thread "main" java.lang.UnsupportedOperationException at java.base/java.util.ImmutableCollections.uoe(Unknown Source) at java.base/java.util.ImmutableCollections$AbstractImmutableMap.put(Unknown Source) at UnmodifiableMapTest.main(UnmodifiableMapTest.java:7)
ตัวอย่าง 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); } }
ผลลัพธ์
empMap - {102=Adithya, 101=Raja, 104=Chaitanya, 103=Jai}