Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีสร้าง Unmodifiable Map ใน Java 9

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 ก่อน