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

วิธี Initialize Immutable Collections ใน Java 9

Factory Methods สำหรับ Immutable Collections

Java 9 ให้ factory methods สร้าง immutable collections (list, set, map) ได้ทั้ง empty และ non-empty แทน Collections.unmodifiableXXX() เดิม

Initialization Patterns

Immutable List

// Empty
List<Integer> immutableEmptyList = List.of();

// Non-empty
List<String> immutableList = List.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");

Immutable Set

// Empty
Set<Integer> immutableEmptySet = Set.of();

// Non-empty
Set<String> immutableSet = Set.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");

Immutable Map

// Empty
Map<Integer, Integer> immutableEmptyMap = Map.of();

// Non-empty
Map<String, String> immutableMap = Map.of(
    "INDIA", "India",
    "AUSTRALIA", "Australia",
    "ENGLAND", "England",
    "NEWZEALAND", "Newzealand"
);

ตัวอย่างเปรียบเทียบ Java 8 vs Java 9

// Java 8
List<String> list8 = new ArrayList<>();
list8.add("INDIA"); ...
List<String> immutableList8 = Collections.unmodifiableList(list8);

// Java 9
List<String> immutableList = List.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");

Output

INDIA
AUSTRALIA
ENGLAND
NEWZEALAND
...
AUSTRALIA : Australia
ENGLAND : England
NEWZEALAND : Newzealand
INDIA : India

สรุป

Factory methods ใน Java 9 ทำให้สร้าง immutable collections ได้กระชับ อ่านง่าย และมีประสิทธิภาพมากกว่า Collections.unmodifiableXXX() เดิมมาก